ContentProvider中央檔案館,以及擷取連絡人電話的樣本,contentprovider
Android官方文檔介紹的資料存放區方式共有五種,sqlite,SharedPreferences,網路儲存,外儲儲存,檔案儲存體,但是這些資料都無法進行共用,那麼我們就引入了今天的主角:ContentProvider
ContentResolver操作ContentProvider中的資料;可以使用Activity提供的getContentResolver()方法;它有四個相同簽名的方法insert,update,delete,query
擷取連絡人資訊
// 通過隱式意圖開啟通訊錄
Intent intent =newIntent(Intent.ACTION_PICK,ContactsContract.Contacts.CONTENT_URI);
startActivityForResult(intent,1001);
// 擷取選擇後的返回結果
@Override
protectedvoid onActivityResult(int requestCode,int resultCode,Intent data){
super.onActivityResult(requestCode, resultCode, data);
if(requestCode ==1001){
if(resultCode == RESULT_OK){
ContentResolver resolver = getContentResolver();
Uri uri = data.getData();
//uri = content://com.android.contacts/contacts/lookup/0r5-D9ADC7B9BBC9C7B9DBBDADC9/5
Cursor cursor = resolver.query(uri,null,null,null,
null);
if(cursor.moveToFirst()){
for(int i =0; i < cursor.getColumnCount(); i++){
Log.i("-->", cursor.getColumnNames()[i]+":"+ cursor.getString(i));
}
sort_key:wang hongxiao
photo_uri:null
send_to_voicemail:0
contact_status:null
contact_status_label:null
pinned:0
display_name:wang hongxiao
phonebook_label_alt:H
phonebook_bucket:23
contact_status_res_package:null
in_default_directory:1
photo_id:null
custom_ringtone:null
_id:5
times_contacted:0
phonebook_label:W
display_name_alt:hongxiao, wang
lookup:0r5-D9ADC7B9BBC9C7B9DBBDADC9
phonetic_name:null
last_time_contacted:0
contact_last_updated_timestamp:1477791122100
has_phone_number:1
in_visible_group:1
display_name_source:40
photo_file_id:null
is_user_profile:0
contact_status_ts:null
sort_key_alt:hongxiao, wang
phonebook_bucket_alt:8
contact_presence:null
starred:0
photo_thumb_uri:null
contact_status_icon:null
contact_chat_capability:null
phonetic_name_style:0
name_raw_contact_id:5
通過分析,我們可以得到我們關心的三個欄位
來自為知筆記(Wiz)