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