1

我想在 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 帐户发送电子邮件的各种电子邮件地址。

有什么方法可以只检索出现在“人脉”应用程序中的联系人吗?

4

1 回答 1

0

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

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

于 2014-12-27T00:29:57.340 回答