调用联系人选择器以显示所有联系人的方法如下(在SO上已经多次提到):
调用联系人选择器并仅显示具有电话号码的联系人可以像这样完成(在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 );
如果我这样做,我只能在联系人选择器中看到那些至少有一个电话号码的联系人,这正是我所需的。不幸的是,使用上面的代码片段,我只能获得显示名称,但再也没有任何电话号码了。
有人知道我需要更改什么才能获取电话号码吗?
提前致谢。