android获取系统自带浏览器书签
刚刚接手一个备份系统浏览器书签的模块,现在把代码贴出来,另外有几点疑问请路过的大神指教
1、根据官方api应该是有以下几个字段是可以获取的
但是除了TITLE和URL能获取其他的都会报java.lang.IllegalStateException: Couldn‘t read row 0, col -1 from CursorWindow. Make sure the Cursor is initialized correctly before accessing data from it.异常
2、是不是只能获得系统自带浏览器书签?如果我装的是百度或其他浏览器建的书签是不是就得不到了?
以下是我的代码片段
// 按访问时间排序 String orderBy = Browser.BookmarkColumns.VISITS + " DESC"; // flag=1表示书签 String whereClause = Browser.BookmarkColumns.BOOKMARK + " = 1 "; ContentResolver cr = context.getContentResolver(); Cursor cursor = cr.query(Browser.BOOKMARKS_URI, Browser.HISTORY_PROJECTION, whereClause, null, orderBy); while (cursor != null && cursor.moveToNext()) { BookMark bookMark = new BookMark(); // TODO 可能为空的字段 // String id = cursor.getString(cursor // .getColumnIndex(Browser.BookmarkColumns._ID)); // if (id != null) // bookMark.set_id(id); // // String count = cursor.getString(cursor // .getColumnIndex(Browser.BookmarkColumns._COUNT)); // if (count != null) // bookMark.set_count(count); String title = cursor.getString(cursor .getColumnIndex(Browser.BookmarkColumns.TITLE)); if (title != null) bookMark.setTitle(title); String url = cursor.getString(cursor .getColumnIndex(Browser.BookmarkColumns.URL)); if (url != null) bookMark.setUrl(url); byte[] b = cursor.getBlob(cursor .getColumnIndex(Browser.BookmarkColumns.FAVICON)); if (b != null) { bookMark.setFavicon((BitmapFactory.decodeByteArray(b, 0, b.length))); } else { bookMark.setFavicon(null); } // bookMark.setCreated(cursor.getString(cursor // .getColumnIndex(Browser.BookmarkColumns.CREATED))); // bookMark.setDate(cursor.getString(cursor // .getColumnIndex(Browser.BookmarkColumns.DATE))); // bookMark.setVisits((cursor.getString(cursor // .getColumnIndex(Browser.BookmarkColumns.VISITS)))); // bookMarks.add(bookMark); bookMarks.add(bookMark); } cursor.close(); JSONObject jso = listTojsoJsonObject(bookMarks); return jso.toString();
郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。