Android API-获取浏览器书签/历史记录

时间:2013-11-07 01:47:19

标签: android

我想写一个小的android小部件来从我的firefox浏览器中获取书签,但是我的代码:

Cursor myCursor=Browser.getAllBookmarks(main.getContentResolver());

不工作。此光标始终为空。这很奇怪,因为我的所有浏览器(firefox,chrome)都有很多书签。

我找到了这段代码:

String query = Browser.BookmarkColumns.BOOKMARK+"=1";
Cursor crs=main.getContentResolver().query( UriProvider.QUERY
                , columns
                , query
                , null
                , sortOrder
        );

但效果相同,结果为空。

我对了解android.provider.Browser类的性质有疑问。它是数据库表的接口吗?我可以在这个表中找到什么样的数据(来自firefox或chrome的书签,或两者兼而有之)。当此表与ff / chrome同步时?

感谢您的任何建议......

祝你好运 马里奥

2 个答案:

答案 0 :(得分:3)

String[] proj = new String[] { Browser.BookmarkColumns.TITLE, Browser.BookmarkColumns.URL };
    String sel = Browser.BookmarkColumns.BOOKMARK + " = 0"; // 0 = history, 1 =bookmark
    mCur = this.managedQuery(Browser.BOOKMARKS_URI, proj, sel, null, null);
    this.startManagingCursor(mCur);
    mCur.moveToFirst();

    String title = "";
    String url = "";

    if (mCur.moveToFirst() && mCur.getCount() > 0) {
        while (mCur.isAfterLast() == false && cont) {

            title = mCur.getString(mCur.getColumnIndex(Browser.BookmarkColumns.TITLE));
            url = mCur.getString(mCur.getColumnIndex(Browser.BookmarkColumns.URL));
            // Do something with title and url

            mCur.moveToNext();
        }
    }

您是否已在AndroidManifest.xml中添加了权限
<uses-permission android:name="com.android.browser.permission.READ_HISTORY_BOOKMARKS"/>

答案 1 :(得分:1)

感谢您的回复。

您的代码有效,但仅适用于默认的内置浏览器。

对于chrome我必须使用特殊内容提供者uri:

Uri uriCustom = Uri.parse("content://com.android.chrome.browser/bookmarks");

对于FF而言,事情更复杂,因为当我尝试使用uri时:

Uri uriCustom = Uri.parse("content://org.mozilla.firefox.db.browser/bookmarks");

我明白了:

java.lang.SecurityException: Permission Denial: reading org.mozilla.firefox.db.BrowserProvider uri content://org.mozilla.firefox.db.browser/bookmarks from pid=xxxx, uid=xxxx requires org.mozilla.firefox.permissions.BROWSER_PROVIDER, or grantUriPermission()