之前遇到了一些知識沒有總結的習慣,今天來回顧一下一個簡單的小功能:Android開發中調起系統的聯系人列表。
在網上收到了好多這方面的知識,自己在寫代碼的時候總結了一個最簡化的方法,希望可以給大家提供幫助。話不多說開始上代碼。
是不是舉得很簡單,沒錯,就是這么簡單。好了把代碼粘貼給大家。需要的朋友可以拿去直接粘貼。
<uses-permission android:name="android.permission.READ_CONTACTS" />
//調起系統聯系人
startActivityForResult(new Intent(Intent.ACTION_PICK, ContactsContract.Contacts.CONTENT_URI), 0);
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if (resultCode == Activity.RESULT_OK) {
// ContentProvider展示數據類似一個單個數據庫表
// ContentResolver實例帶的方法可實現找到指定的ContentProvider并獲取到ContentProvider的數據
ContentResolver reContentResolverol = getContentResolver();
// URI,每個ContentProvider定義一個唯一的公開的URI,用于指定到它的數據集
Uri contactData = data.getData();
// 查詢就是輸入URI等參數,其中URI是必須的,其他是可選的,如果系統能找到URI對應的ContentProvider將返回一個Cursor對象.
Cursor cursor = managedQuery(contactData, null, null, null, null);
cursor.moveToFirst();
// 獲得DATA表中的名字
String linkname = cursor.getString(cursor.getColumnIndex(ContactsContract.Contacts.DISPLAY_NAME));
etName.setText(linkname);
// 條件為聯系人ID
String contactId = cursor.getString(cursor.getColumnIndex(ContactsContract.Contacts._ID));
// 獲得DATA表中的電話號碼,條件為聯系人ID,因為手機號碼可能會有多個
Cursor phone = reContentResolverol.query(ContactsContract.CommonDataKinds.Phone.CONTENT_URI, null,
ContactsContract.CommonDataKinds.Phone.CONTACT_ID + " = " + contactId, null, null);
String phonenumber = "";
while (phone.moveToNext()) {
phonenumber = phone.getString(phone.getColumnIndex(ContactsContract.CommonDataKinds.Phone.NUMBER)).trim().replace(" ", "");
}
etNumber.setText(phonenumber);
}
}