如何选择联系人只返回选定的联系人而不是全部?

时间:2011-10-14 18:42:15

标签: android android-contacts

我正在使用此代码返回用户拥有的联系人。但是我希望将此代码转换为仅显示在联系人选择中选择的联系人。

 @Override  
public void onActivityResult(int reqCode, int resultCode, Intent data) {  
    super.onActivityResult(reqCode, resultCode, data); 
    ContentResolver cr = getContentResolver();
    getContacts(cr);
}

public static void getContacts(ContentResolver cr) {
    String number = null;
    Cursor cur = cr.query(ContactsContract.Contacts.CONTENT_URI, null, null, null, null);
    if (cur.getCount() > 0) {
        while (cur.moveToNext()) {
        // read id
            String id = cur.getString(cur.getColumnIndex(ContactsContract.Contacts._ID));
            /** read names **/
            String displayName = cur.getString(cur.getColumnIndex(ContactsContract.Contacts.DISPLAY_NAME));
            /** Phone Numbers **/
                Cursor pCur = cr.query(ContactsContract.CommonDataKinds.Phone.CONTENT_URI, null,
                        ContactsContract.CommonDataKinds.Phone.CONTACT_ID + " = ?", new String[] { id }, null);
                while (pCur.moveToNext()) {
                   number = pCur.getString(pCur.getColumnIndex(ContactsContract.CommonDataKinds.Phone.NUMBER));
                    String typeStr = pCur.getString(pCur.getColumnIndex(ContactsContract.CommonDataKinds.Phone.TYPE));
            }
            pCur.close();
         Log.e("NAME", displayName + number);
        }

    }
    }

}

我如何转换此代码以使其返回所选联系人而不是所有联系人?

2 个答案:

答案 0 :(得分:1)

您也可以在SO How to call Android contacts list?上使用回复此旧帖子中包含的示例。 SQRFV的观点很明显,我们缺少布局上下文,用户可以选择首先查看和选择联系人。

答案 1 :(得分:0)

您在哪里存储所选联系人?这种方法只是查看手机上的联系人列表 - 没有存储或菜单值的概念。您正在使用此活动的布局代码是什么?

如果您拥有布局中的联系人,或者您通过其他方式传递了联系人,则可以在手机上直接查询以检索此数据。请参阅:http://developer.android.com/resources/articles/contacts.html,尤其是Loookup URI部分。