我想在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帐户发送了电子邮件。
有什么方法可以只检索人物应用中出现的联系人吗?
答案 0 :(得分:0)
您可能应该将cr.query过滤到有电话号码的联系人(ContactsColumns.HAS_PHONE_NUMBER):