如何只检索在People应用中有条目的Android联系人?

时间:2013-08-07 19:12:25

标签: android android-contentprovider android-contacts

我想在Android应用中包含一个自动填充文本框,其中适配器是用户联系人显示名称的列表,所以我从这开始:

    private static final String[] CONTACT_COLUMNS = new String[] { ContactsContract.Contacts.DISPLAY_NAME, BaseColumns._ID };

    List<String> contacts = new ArrayList<String>();
    ContentResolver cr = this.getContentResolver();
    Cursor cursor = cr.query(ContactsContract.Contacts.CONTENT_URI, CONTACT_COLUMNS, null, null, null);
    while (cursor.moveToNext()) {
        String name = cursor.getString(0);
        contacts.add(name);
    }
    cursor.close();

    ArrayAdapter<String> adapter = new ArrayAdapter<String>(this, R.layout.contact_list_item, contacts.toArray(new String[] {}));
    MultiAutoCompleteTextView txtFriends = (MultiAutoCompleteTextView) findViewById(R.id.newVisitFriends);
    txtFriends.setAdapter(adapter);
    txtFriends.setTokenizer(new MultiAutoCompleteTextView.CommaTokenizer());

然而,该查询的结果会返回来自每个来源的每个联系人,包括许多重复的名称和各种电子邮件地址,这些地址可能在某个时刻向用户的Gmail帐户发送了电子邮件。

有什么方法可以只检索人物应用中出现的联系人吗?

1 个答案:

答案 0 :(得分:0)

您可能应该将cr.query过滤到有电话号码的联系人(ContactsColumns.HAS_PHONE_NUMBER):

http://developer.android.com/reference/android/provider/ContactsContract.ContactsColumns.html#HAS_PHONE_NUMBER