gpt4 book ai didi

java - 在 Android 浏览器中获取当前 URL

转载 作者:塔克拉玛干 更新时间:2023-11-02 20:16:30 24 4
gpt4 key购买 nike

我正在寻找一种方法来获取用户在 Android 浏览器应用程序上访问的当前 URL。我发现我可以使用以下技术从 Browser.BOOKMARKS_URI 数据库中获取上次访问的 URL:

Cursor cursor = context.getContentResolver().query(Browser.BOOKMARKS_URI,
Browser.HISTORY_PROJECTION, null, null,
Browser.BookmarkColumns.DATE + " DESC");
cursor.moveToNext();
String url = cursor.getString(Browser.HISTORY_PROJECTION_URL_INDEX);
cursor.close();

这个问题是,当用户按下返回键以导航到浏览器中的上一页时,Browser.BOOKMARKS_URI 数据库没有得到更新,并且查询返回不正确的结果.

请看下面的例子:

  1. 用户导航到 www.google.com -> 查询返回“www.google.com”
  2. 用户导航到 www.imdb.com -> 查询返回“www.imdb.com”
  3. 用户按返回键返回 www.google.com -> 查询返回“www.imdb.com”(!!)

有谁知道如何返回用户正在查看的正确网址吗?

最佳答案

我认为您没有通过以下方法。一次尝试吧!您可以像访问其他 ContentProvider 一样访问浏览历史记录。除了浏览历史,您还可以获得书签列表。

Cursor webLinksCursor = getContentResolver().query(Browser.BOOKMARKS_URI, Browser.HISTORY_PROJECTION, null, null, 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

关于java - 在 Android 浏览器中获取当前 URL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18601038/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com