我想在 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 帐户发送电子邮件的各种电子邮件地址。
有什么方法可以只检索出现在“人脉”应用程序中的联系人吗?