【问题标题】:Android API- getting browser bookmarks/historyAndroid API-获取浏览器书签/历史记录
【发布时间】:2013-11-18 12:59:18
【问题描述】:

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

感谢您的任何建议...

最好的问候 马里奥

【问题讨论】:

  • 您是否在清单com.android.browser.permission.READ_HISTORY_BOOKMARKS中添加了权限

标签: android


【解决方案1】:
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"/>

【讨论】:

  • @Nitin Misra 在 Android M 中不推荐使用该权限,是否有任何替代解决方案?
  • @Keshav1234 仍在努力,这是一个线程。如果你能解决这个问题,请告诉我:stackoverflow.com/questions/33486463/…
【解决方案2】:

感谢您的回复。

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

对于 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()

【讨论】:

  • 你是怎么解决这个问题的?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2011-02-04
  • 1970-01-01
  • 2017-11-01
  • 2012-05-10
  • 1970-01-01
  • 2011-11-14
  • 2013-05-21
相关资源
最近更新 更多