读取ContentProvider的基本步骤:
1:得到ContentResolver类对象:ContentResolver cr = getContentResolver();
2:定义要查询的字段String数组。
3:使用cr.query(URI,字段数组,null, null,null);,返回一个Cursor对象。
4:使用while循环得到Cursor里面的内容。
电话联系人:
Uri:ContactsContract.Contacts.CONTENT_URI
String[] columns={"_id","display_name","has_phone_number"};
Uri:ContactsContract.CommonDataKinds.Phone.CONTENT_URI
String[] phone_cols={ContactsContract.CommonDataKinds.Phone.NUMBER,
ContactsContract.CommonDataKinds.Phone.CONTACT_ID
};
图片:
Uri:MediaStore.Images.Media.EXTERNAL_CONTENT_URI
String str[] = { MediaStore.Images.Media._ID,
MediaStore.Images.Media.DISPLAY_NAME,
MediaStore.Images.Media.DATA};
音频:
Uri:MediaStore.Audio.Media.EXTERNAL_CONTENT_URI
String str[] = { MediaStore.Audio.Media._ID,
MediaStore.Audio.Media.DISPLAY_NAME,
MediaStore.Audio.Media.DATA,
MediaStore.Audio.Media.SIZE};
视频:
Uri:MediaStore.Video.Media.EXTERNAL_CONTENT_URI
String str[] = { MediaStore.Video.Media._ID,
MediaStore.Video.Media.DISPLAY_NAME,
MediaStore.Video.Media.DATA};
短信:
Uri:(Uri.parse("content://sms/")
String[] cols={"address","type","body","date"};
通话记录:
Uri:CallLog.Calls.CONTENT_URI
String[] cols={
CallLog.Calls.NUMBER,//电话号码
CallLog.Calls.CACHED_NAME,//联系人名
CallLog.Calls.TYPE,//通话类型:1:已接,2:已拨,3:未接
CallLog.Calls.DATE,//通话日期时间
CallLog.Calls.DURATION//通话时长
};
部分权限:
<uses-permission android:name="android.permission.INTERNET"/>
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
<uses-permission android:name="android.permission.CALL_PHONE"/>
<uses-permission android:name="android.permission.SEND_SMS"/>
<uses-permission android:name="android.permission.READ_CONTACTS"/>
<uses-permission android:name="android.permission.READ_SMS"/>
<uses-permission android:name="android.permission.RECORD_AUDIO"/>
<uses-permission android:name="android.permission.READ_PHONE_STATE"/>
08-25