最近几天看了下android.provider包.这个包下的类都是一些获取sqliet3中存储的信息的provider.主要有获取联系人信息的(android.provider.ContactsContract)获取通话记录(android.provider.CallLog),获取设置信息(android.provider.Settings),获取存储的media信息(android.provider.MediaStore)(我主要就看了这四个类,当然还有其它的),信息的获取是通过构造游标(cursor)实现的.我感觉游标的构造就是通过一些方法来构造sql语句.

下面是我写CallLog的简单demo的代码片段:

        Uri uri = Calls.CONTENT_URI;        String[] projections = new String[]{        Calls._ID,        Calls.NUMBER,        Calls.TYPE        };                String selections = null;                String[] selectionsArgs = null;                String sortOrder = null;                Cursor cursor = this.managedQuery(uri, projections, selections, selectionsArgs, sortOrder);                int count = -1;                if(cursor != null){        count = cursor.getCount();        }        if(count > 0){        for(int i = 0;i<count ;i++){        cursor.moveToNext();        String s0 = cursor.getString(0);        String s1 = cursor.getString(1);        String s2 = cursor.getString(2);        }        }

Uri是要查询的table的url,projection是要查询的字段,selections相当于where条件部分,selectionArgs是where条件的值,最后sortOrder是order by 部分.下面是条日志中截取的sql语句(这条语句是在写ContactsContract练习时专门定义错误的方法后打出来的日志,正确整不出来,嘿嘿,不知道有没有别的设置)

SELECT _id,       display_name,       data1,       data3,       mimetype,       contacts_status_updates.status_label AS contact_status_label  FROM view_data_restricted data  LEFT OUTER JOIN status_updates contacts_status_updates ON (status_update_id =                                                            contacts_status_updates.status_update_data_id) WHERE (1)   AND (vnd.android.cursor.dir / data = 'vnd.android.cursor.item/im')

在获取ContactsContract信息时,可以通过ContactsContract.Data的CONTENT_URI查询可以查到通讯中的所有信息,也可以通过一些专有的Uri进行获取专门的信息如Phone,Email等(但是我感觉完全没必要,有Data的Uri完全足够,经过selections过滤掉就可以了);在获取Media信息时有EXTERNAL_CONTENT_URI,INTERNAL_CONTENT_URI之分;Setting信息主要包含了安全(secure)和系统(system)设置,都有相应的CONTENT_URI,具体的在用的时候查看下api就明白了。当然在这个包下还有android.provider.LiveFolders,android.provider.UserDictionary等类。

更多相关文章

  1. Android应用获取外部盘符时,默认创建Android/data/包名/files目
  2. android实现异步加载图片
  3. Android获得Location信息的方法
  4. Android(安卓)APP - GPS定位并获取地理位置
  5. android Q 使用 ACTION_OPEN_DOCUMENT_TREE 选择目录进行遍历文
  6. 获取设备上所有系统app信息
  7. android设备获取当前wifi下的路由器的mac和路由器的名称
  8. android的EditText获取另一个焦点
  9. Android(安卓)学生信息管理系统

随机推荐

  1. android---Timer和Handler
  2. Android(安卓)Studio使用Android(安卓)Bu
  3. android 官方文档阅读记录-多屏幕适配
  4. Android(安卓)网络请求库Retrofit简单使
  5. Android(安卓)9 Pie 兼容性常见问题及注
  6. Android(安卓)VideoView播放视频控制:开始
  7. Binder机制原理学习笔记(4)_ServiceManag
  8. Android(安卓)中Odex文件生成与合并
  9. Android评论布局,针对TextView换行和与其
  10. Android(安卓)system 分区讲解