Android中跳轉到手機通訊錄並返回電話和姓名
阿新 • • 發佈:2019-01-21
從Android跳轉到手機通訊錄中並返回電話號碼和姓名等資料
//開通許可權
<uses-permission android:name="android.permission.READ_CONTACTS" />
<uses-permission android:name="android.permission.READ_PHONE_STATE" />
//跳轉到通訊錄 action=ContactsContract.Contacts.CONTENT_URI;
Intent intent = new Intent(Intent.ACTION_PICK,ContactsContract.Contacts .CONTENT_URI);
startActivityForResult(intent, 0);
//跳轉到通訊錄後的回撥
```
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
switch (requestCode){
case 0:
if(data==null)
{
return ;
}
**//處理返回的data,獲取選擇的聯絡人資訊** Uri uri=data.getData(); String[] contacts=getPhoneContacts(uri); et_name.setText(contacts[0]); et_tele.setText(contacts[1]); break; } super.onActivityResult(requestCode, resultCode, data); }
**//從回撥的uri中查詢資料庫拿到電話號碼和姓名**
private String[] getPhoneContacts(Uri uri){
String[] contact=new String[2];
**//得到ContentResolver物件**
ContentResolver cr = getContentResolver();
**//取得電話本中開始一項的游標**
Cursor cursor=cr.query(uri,null,null,null,null);
if(cursor!=null)
{
cursor.moveToFirst();
**//取得聯絡人姓名**
int nameFieldColumnIndex=cursor.getColumnIndex(ContactsContract.Contacts.DISPLAY_NAME);
contact[0]=cursor.getString(nameFieldColumnIndex);
**//取得電話號碼**
String ContactId = cursor.getString(cursor.getColumnIndex(ContactsContract.Contacts._ID));
Cursor phone = cr.query(ContactsContract.CommonDataKinds.Phone.CONTENT_URI, null,
ContactsContract.CommonDataKinds.Phone.CONTACT_ID + "=" + ContactId, null, null);
if(phone != null){
phone.moveToFirst();
contact[1] = phone.getString(phone.getColumnIndex(ContactsContract.CommonDataKinds.Phone.NUMBER));
}
phone.close();
cursor.close();
}
else
{
return null;
}
return contact;
}
“`