Getting the current URL in an Android browser

血红的双手。 提交于 2019-12-04 09:49:51

问题


I'm searching for a way to get the current URL a user is visiting on the android browser application. I figured out that I can get the last visited URL from the Browser.BOOKMARKS_URI database using the following technique:

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();

The problem with this, is that the Browser.BOOKMARKS_URI db doesn't get updated when the user presses back in order to navigate to the previous page in the browser, and the query returns incorrect results.

See the following example:

  1. user navigates to www.google.com -> Query returns "www.google.com"
  2. user navigates to www.imdb.com -> Query returns "www.imdb.com"
  3. user presses back to return to www.google.com -> Query returns "www.imdb.com" (!!)

Does anyone have any idea how to return the correct url a user is viewing?


回答1:


I think you did not have gone through the following approah. once try it! You can access Browsing history the same way you do that for other ContentProviders. Besides browsing history you can also get list of Bookmarks.

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();

and you need the permission also

com.android.browser.permission.READ_HISTORY_BOOKMARKS


来源:https://stackoverflow.com/questions/18601038/getting-the-current-url-in-an-android-browser

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!