Java 在Android浏览器中获取当前URL
我正在寻找一种方法来获取用户在android浏览器应用程序上访问的当前URL。 我发现我可以使用以下技术从Java 在Android浏览器中获取当前URL,java,android,url,browser-history,android-browser,Java,Android,Url,Browser History,Android Browser,我正在寻找一种方法来获取用户在android浏览器应用程序上访问的当前URL。 我发现我可以使用以下技术从浏览器中获取上次访问的URL。书签\u URI数据库: Cursor cursor = context.getContentResolver().query(Browser.BOOKMARKS_URI, Browser.HISTORY_PROJECTION, null, null, Browser.BookmarkColumns.DATE + " DESC")
浏览器中获取上次访问的URL。书签\u URI
数据库:
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();
问题在于,当用户按back键以导航到浏览器中的上一页时,Browser.BOOKMARKS\u URI
db不会得到更新,并且查询返回不正确的结果
请参见以下示例:
有人知道如何返回用户正在查看的正确url吗?我认为您没有经过以下步骤。试试看! 您可以使用与其他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
你做的基本上和我做的一样,那就是浏览
浏览器.BOOKMARKS\u URI
数据库。唯一的区别是我只得到最近的url,而你得到所有的url。正如我在问题中所写的那样,Browser.BOOKMARKS\u URI
数据库在用户按下返回键后不会保留当前url。我有一个想法,JQuery mobile如何执行此操作?只有在我编写自己的浏览器应用程序时,JQuery mobile才会帮助我,但我正试图从本机\chrome android浏览器获取当前url。@MichaelGregorov:嘿,你是如何解决问题的?实际上,我正在寻找类似问题的答案。Thanks@Sam:不幸的是,我没能解决它。我确实在chrome浏览器内容提供商那里获得了更好的结果。用户按下后的当前url已在数据库中注册,但在用户在打开的选项卡之间切换时未注册。如果你能找到解决方案,我很高兴听到。内容解析程序按预期工作:press back不会重新加载www.google.com
页面,而是从缓存中读取。当用户切换选项卡时也会发生同样的情况:历史记录显示最新加载的URL,而不一定是显示的URL。您可以在嵌入应用程序的WebView中跟踪当前URL。我没有使用嵌入应用程序的WebView。我正在尝试查找Android浏览器应用程序的当前网页。我认为这超出了正常的应用程序功能,通常你无法访问其他应用程序数据,除非它以某种方式提供,获取浏览器历史记录似乎是你唯一能做的事。