5

请问,是否可以使用意图和默认联系人应用程序仅从带有电话号码的联系人中进行选择?

也许对此进行一些修改(显示所有联系人的选择):

Intent intent = new Intent(Intent.ACTION_PICK, ContactsContract.Contacts.CONTENT_URI);
startActivityForResult(intent, CONTACT_PICKER_ID);
4

2 回答 2

7
Intent intent = new Intent(Intent.ACTION_PICK, Contacts.CONTENT_URI);
intent.setType(ContactsContract.CommonDataKinds.Phone.CONTENT_TYPE);
startActivityForResult(intent, 1);
于 2012-12-18T13:43:23.877 回答
3

您可以在联系人上打开光标并运行通过电话号码获取联系人。您可以使用此光标重新创建从您提到的意图中显示的联系人选择器活动(将它们扔到列表视图中进行选择)

        ContentResolver cr = getContentResolver();
        Cursor phoneCur = cr.query( 
                ContactsContract.CommonDataKinds.Phone.CONTENT_URI, 
                null,
                null, 
                null, 
                null); 
        while (phoneCur.moveToNext()) { 
            String phone = phoneCur.getString(
                      phoneCur.getColumnIndex(
                              ContactsContract.CommonDataKinds.Phone.DATA));
            //do something, check if empty...
        } 
        phoneCur.close();

使用这种方法,您还需要清单中的读取联系人权限

<uses-permission android:name="android.permission.READ_CONTACTS"/>
于 2012-08-23T20:37:44.920 回答