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();  

时间: 2024-10-06 08:10:41

android获取系统自带浏览器书签的相关文章

Android获取系统时间方法详解

Android获取系统时间方法的方法有很多种,常用的有Calendar.Date.currentTimeMills等方法. (1)Calendar Calendar获取系统时间首先要用Calendar.getInstance()函数获取一个实例,再为该实例设定时区(中国的时区为GMT+8:00),最后使用Calendar.get()函数获取时间的具体信息,如年,月,日,小时,分,秒,星期几. package com.hzhi.time_example; import java.util.Cale

Android 获取系统相册中的所有图片

Android 提供了API可获取到系统相册中的一些信息,主要还是通过ContentProvider 来获取想要的内容. 代码很简单,只要熟悉ContentProvider 就可以了. public static List<String> getSystemPhotoList(Context context) { List<String> result = new ArrayList<String>(); Uri uri = MediaStore.Images.Medi

Android获取系统ID(com.android.internal.R)

R.id.icon 怎么获取,这个东西其实在 com.android.internal.R 这个里面,但是这个类我们访问不到怎么办? 反射呗, Java 的反射可谓是万能啊,啥都可以拿到只要他在. [java] view plaincopy Class<?> clazz = Class.forName("com.android.internal.R$id"); Field field = clazz.getField("icon"); field.set

Android调用系统自带的文件管理器进行文件选择

http://blog.csdn.net/zqchn/article/details/8770913的补充 FileUtils文件 public class FileUtils {     public static String getPath(Context context, Uri uri) {         if ("content".equalsIgnoreCase(uri.getScheme())) {             String[] projection =

Android 获取系统或SDCARD剩余空间信息(转)

android.os下的StatFs类主要用来获取文件系统的状态,能够获取sd卡的大小和剩余空间,获取系统内部空间也就是/system的大小和剩余空间等等.      看下读取sd卡的:Java代码 1 void readSDCard() { 2 String state = Environment.getExternalStorageState(); 3 if(Environment.MEDIA_MOUNTED.equals(state)) { 4 File sdcardDir = Envir

(转)Android调用系统自带的文件管理器进行文件选择并获得路径

Android区别于iOS的沙盒模式,可以通过文件浏览器浏览本地的存储器.Android API也提供了相应的接口. 基本思路,先通过Android API调用系统自带的文件浏览器选取文件获得URI,然后将URI转换成file,从而得到file. 调用系统自带的文件浏览器 public class MainActivity extends AppCompatActivity { @Override protected void onCreate(Bundle savedInstanceState

(转)Android中系统自带的锁:WalkLock、KeyguardLock

Android系统自带了两把锁: (1)WalkLock:唤醒锁,点亮屏幕用的 ; (2)KeyguardLock:键盘锁,解锁键盘用的; WalkLock 唤醒锁 (1)WalkLock真的能点亮屏幕吗? 答案是肯定的,可是有时候为什么不点亮屏幕,这个就是参数设置的问题了. PowerManager.newWakeLock(PowerManager.FULL_WAKE_LOCK | PowerManager.ACQUIRE_CAUSES_WAKEUP, "Gank"); PowerM

Android 获取系统的联系人

本文主要介绍android中怎样获取系统的联系人数据 首先打开模拟器 点击联系人图标按钮 说明系统联系人数据库是空的,打开File explorer,找到data/data下面的文件夹: 将contacts2.db文件导出,添加到sqlite中的时候报错: 点击“ok”忽略之 表结构相当的复杂,首先搞清楚其中的三张表 * data表 保存联系人的数据 * raw_contacts表 保存联系人的id contact_id * mimetypes表 保存联系人数据的类型 接下来通过模拟器添加联系人

Android之系统自带的文字外观设置及实际显示效果图 android:textAppearance

xml布局里面设置文字的外观: 如"android:textAppearance="?android:attr/textAppearanceLargeInverse"这里引用的是系统自带的一个外观, ?表示系统是否有这种外观,否则使用默认的外观. 可设置的值如下: textAppearanceButton/   textAppearanceInverse/   textAppearanceLarge/   textAppearanceLargeInverse/  textAp