之前遇到了一些知識沒有總結的習慣,今天來回顧一下一個簡單的小功能:Android開發中調起系統的聯系人清單。
在網上收到了好多這方面的知識,自己在寫代碼的時候總結了一個最簡化的方法,希望可以給大家提供幫助。話不多說開始上代碼。
首先要有一個點選事件
接下來就是調起系統的聯系人
接下來就是我們得到了資訊,在根據需求進行處理
最後不要忘了配置權限
是不是舉得很簡單,沒錯,就是這麼簡單。好了把代碼粘貼給大家。需要的朋友可以拿去直接粘貼。
//調起系統聯系人
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);
}
}