我正在寻找一种方法来获取用户在
Android浏览器应用程序上访问的当前URL.
我发现我可以使用以下技术从Browser.BOOKMARKS_URI数据库中获取最后访问过的URL:
我发现我可以使用以下技术从Browser.BOOKMARKS_URI数据库中获取最后访问过的URL:
Cursor cursor = context.getContentResolver().query(Browser.BOOKMARKS_URI,Browser.HISTORY_PROJECTION,null,Browser.BookmarkColumns.DATE + " DESC"); cursor.moveToNext(); String url = cursor.getString(Browser.HISTORY_PROJECTION_URL_INDEX); cursor.close();
这样做的问题是,当用户按下以便导航到浏览器中的上一页时,Browser.BOOKMARKS_URI数据库不会更新,并且查询返回不正确的结果.
请参阅以下示例:
>用户导航到www.google.com – >查询返回“www.google.com”
>用户导航到www.imdb.com – >查询返回“www.imdb.com”
>用户按下返回www.google.com – >查询返回“www.imdb.com”(!!)
有谁知道如何返回用户正在查看的正确网址?
解决方法
我想你没有通过以下的批准.一试吧!
您可以像访问其他ContentProviders一样访问浏览历史记录.除了浏览历史记录,您还可以获得书签列表.
您可以像访问其他ContentProviders一样访问浏览历史记录.除了浏览历史记录,您还可以获得书签列表.
Cursor webLinksCursor = getContentResolver().query(Browser.BOOKMARKS_URI,Browser.BookmarkColumns.DATE + " DESC"); int row_count = webLinksCursor.getCount(); int title_column_index = webLinksCursor.getColumnIndexOrThrow(Browser.BookmarkColumns.TITLE); int url_column_index = webLinksCursor.getColumnIndexOrThrow(Browser.BookmarkColumns.URL); if ((title_column_index > -1) && (url_column_index > -1) && (row_count > 0)) { webLinksCursor.moveToFirst(); while (webLinksCursor.isAfterLast() == false) { if (webLinksCursor.getInt(Browser.HISTORY_PROJECTION_BOOKMARK_INDEX) != 1) { if (!webLinksCursor.isNull(url_column_index)) { Log.i("History","Last page browsed " + webLinksCursor.getString(url_column_index)); break; } } webLinksCursor.moveToNext(); } } webLinksCursor.close();
而你也需要这个许可
com.android.browser.permission.READ_HISTORY_BOOKMARKS
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。