Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/192.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 在Android浏览器中获取当前URL_Java_Android_Url_Browser History_Android Browser - Fatal编程技术网

Java 在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")

我正在寻找一种方法来获取用户在android浏览器应用程序上访问的当前URL。 我发现我可以使用以下技术从
浏览器中获取上次访问的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不会得到更新,并且查询返回不正确的结果

请参见以下示例:

  • 用户导航到www.google.com->查询返回“www.google.com”
  • 用户导航到www.imdb.com->查询返回“www.imdb.com”
  • 用户按back返回www.google.com->查询返回“www.imdb.com”(!!)

  • 有人知道如何返回用户正在查看的正确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浏览器应用程序的当前网页。我认为这超出了正常的应用程序功能,通常你无法访问其他应用程序数据,除非它以某种方式提供,获取浏览器历史记录似乎是你唯一能做的事。