android內容提供者總結

來源:互聯網
上載者:User

標籤:

35.內容提供者:ContentResolver
用內容提供者來擷取連絡人資訊
35-1:許可權
<!-- 對連絡人的讀、寫入權限 -->
<uses-permission android:name="android.permission.READ_CONTACTS" />
<uses-permission android:name="android.permission.WRITE_CONTACTS" />
35-2:建立實體類存放連絡人
int c_id;
String c_name;
String c_phone;
String c_email;
set和get方法以及構造方法
35-3:建立Uri
Uri uri = ContactsContract.Contacts.CONTENT_URI;//連絡人姓名
Uri uriPhone = ContactsContract.CommonDataKinds.Phone.CONTENT_URI;//連絡人電話
Uri uriEmail = ContactsContract.CommonDataKinds.Email.CONTENT_URI;//連絡人郵箱
35-4:建立ContentResolver
ContentResolver resolver = this.getContentResolver();
35-5:用郵標來擷取連絡人名字
35-5-1:建立地址,通過郵標查詢
Cursor cursor = resolver.query(uri, null, null, null, null);
35-5-2:開始查詢
int contactIdIndex = 0;//連絡人ID
int nameIndex = 0;//連絡人姓名
if(cursor.getCount()>0){
contactIdIndex = cursor.getColumnIndex(ContactsContract.Contacts._ID);
nameIndex = cursor.getColumnIndex(ContactsContract.Contacts.DISPLAY_NAME);
}
35-5-3:通過郵標的moveToNext()方式擷取值
while(cursor.moveToNext()){
String contactId = cursor.getString(contactIdIndex);
name = cursor.getString(nameIndex);
……(此處還有下文代碼)
}
35-6:用郵標來擷取連絡人號碼(在上文while迴圈的基礎上繼續)
35-6-1:建立電話號碼的Cursor郵標
//selection相當於SQL中的Where語句吧
String selection = ContactsContract.CommonDataKinds.Phone.CONTACT_ID + "=" +contactId;
Cursor phones = this.getContentResolver().query(uriPhone,null, selection, null, null);
int phoneIndex = 0;
35-6-2如果查詢到了,就返回phoneIndex
if(phones.getCount()>0){
phoneIndex = phones.getColumnIndex(ContactsContract.CommonDataKinds.Phone.NUMBER);
}
35-6-3:同上擷取值
while(phones.moveToNext()){
phoneNumber = phones.getString(phoneIndex);
……(如果還要擷取郵箱,同理在此處寫上代碼)
}
35-7:擷取郵箱
35-7-1:建立郵標查詢
String selectionEmail = ContactsContract.CommonDataKinds.Email.CONTACT_ID +"="+contactId;
Cursor email = this.getContentResolver().query(uriEmail, null, selectionEmail, null, null);
35-7-2:查詢並返回
int emailIndex = 0;
if(email.getCount()>0){
emailIndex = email.getColumnIndex(ContactsContract.CommonDataKinds.Email.DATA);
}
35-7-3:同上擷取值
while (email.moveToNext()) {
Email = email.getString(emailIndex);
}

如果覺得看得麻煩,可以直接用下面現成的代碼:
註:請加許可權及執行個體

Toast.makeText(getApplicationContext(), "正在擷取資訊", 0).show();
ContentResolver resolver = this.getContentResolver();
Cursor cursor = resolver.query(uri, null, null, null, null);
int contactIdIndex = 0;
int nameIndex = 0;
Contact contact;
if (cursor.getCount() > 0) {
contactIdIndex = cursor.getColumnIndex(ContactsContract.Contacts._ID);
nameIndex = cursor.getColumnIndex(ContactsContract.Contacts.DISPLAY_NAME);
}else{
Toast.makeText(getApplicationContext(), "您沒有連絡人資訊", 0).show();
}
while (cursor.moveToNext()) {
String contactId = cursor.getString(contactIdIndex);
name = cursor.getString(nameIndex);

String selection = ContactsContract.CommonDataKinds.Phone.CONTACT_ID+ "=" + contactId;
Cursor phones = this.getContentResolver().query(uriPhone, null,selection, null, null);
int phoneIndex = 0;
if (phones.getCount() > 0) {
phoneIndex = phones.getColumnIndex(ContactsContract.CommonDataKinds.Phone.NUMBER);
}
while (phones.moveToNext()) {
phoneNumber = phones.getString(phoneIndex);
Toast.makeText(getApplicationContext(), name+"==="+phoneNumber, 0).show();
contact = new Contact(name, phoneNumber);
list.add(contact);
}
}

 

android內容提供者總結

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.