5
呼叫聯繫人選擇器顯示所有聯繫人的聯繫人被臨客這個工作(如這裏SO多次表示):問題採摘與電話號碼,並比讀電話號碼
Intent intent = new Intent(Intent.ACTION_PICK, Contacts.CONTENT_URI);
startActivityForResult(intent, REQ_CODE);
我得到的接觸名稱和onActivityResult所有的電話號碼與下面的代碼片段:
public void onActivityResult(int requestCode, int resultCode, Intent intent)
{
Uri contactUri = intent.getData();
ContentResolver resolver = getContentResolver();
long contactId = -1;
// get display name from the contact
Cursor cursor = resolver.query(contactUri,
new String[] { Contacts._ID, Contacts.DISPLAY_NAME },
null, null, null);
if(cursor.moveToFirst())
{
contactId = cursor.getLong(0);
Log.i("tag", "ContactID = " + Long.toString(contactId));
Log.i("tag", "DisplayName = " + cursor.getString(1));
}
// get all phone numbers with type from the contact
cursor = resolver.query(Phone.CONTENT_URI,
new String[] { Phone.TYPE, Phone.NUMBER },
Phone.CONTACT_ID + "=" + contactId, null, null);
while(cursor.moveToNext())
{
Log.i("tag", "PhoneNumber = T:" + Integer.toString(cursor.getInt(0)) + "/N:" + cursor.getString(1));
}
調用聯繫人挑選,只顯示與聯繫人的電話號碼可以這樣做(在SO還發現):
Intent intent = new Intent(Intent.ACTION_PICK);
intent.setType(ContactsContract.CommonDataKinds.Phone.CONTENT_TYPE);
startActivityForResult(intent, REQ_CODE);
如果我這樣做了,我只會在聯繫人選擇器中看到至少有一個電話號碼的聯繫人,這正是我所需要的。不幸的是,使用上面的代碼片段,我只能得到顯示名稱,而不是任何電話號碼。
有沒有人有一個想法,我必須改變以獲得電話號碼?
在此先感謝
謝謝你的回答Jordi。實際的問題是,我的問題onActivityResult方法中的第一個查詢:它返回聯繫人或電話的ID,具體取決於我是否使用intent.setType(..)設置了Intent中的類型。由於我需要兩種方式來閱讀聯繫人(使用帶有電話篩選器的聯繫人選擇器或不使用聯繫人選擇器),我必須在第一個查詢中閱讀Contact._ID和DisplayName,具體取決於此。 但你的答案幫助...再次感謝。 – infero