2

我想写一个小的 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 同步?

感谢您的任何建议...

最好的问候马里奥

4

2 回答 2

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"/>

于 2013-11-07T04:08:21.213 回答
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()
于 2013-11-08T22:57:41.173 回答