我想写一个小的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同步时?
感谢您的任何建议......
祝你好运 马里奥
答案 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()