Android:我试图根据显示名称搜索联系人
问题描述:
我正在尝试根据显示名称搜索联系人。 我已经从Android开发人员网站上给出的示例代码参考。Android:我试图根据显示名称搜索联系人
https://developer.android.com/training/contacts-provider/retrieve-names.html
在此示例中,搜索执行从整个联系人的详细信息存在于接触不仅从联系人名称。
例如,如果用户在他的联系人中有一个电子邮件地址,那么搜索也会在匹配电子邮件时执行。 或者如果一个号码存储在家庭类型中,则在键入h时,家庭类别中存在的号码也显示出来。
我希望搜索被限制为其显示名称。
final static String SELECTION =
(Utils.hasHoneycomb() ? Contacts.DISPLAY_NAME_PRIMARY : Contacts.DISPLAY_NAME) +
"<>''" + " AND " + Contacts.IN_VISIBLE_GROUP + "=1";
这是我从示例代码中使用的selecton子句。
答
尝试这个
Cursor cursor = getContentResolver().query(
android.provider.ContactsContract.Contacts.CONTENT_URI,
new String[] { ContactsContract.Contacts.PHOTO_ID,
ContactsContract.Contacts.DISPLAY_NAME,
ContactsContract.Contacts._ID },
ContactsContract.Contacts.HAS_PHONE_NUMBER, null,
ContactsContract.Contacts.DISPLAY_NAME);
这cursor
给出任何电话号码,然后我保存独特ID
在ArrayList
这样
cursor.moveToFirst();
while (cursor.moveToNext()) {
contactsID.add(cursor.getString(2));
}
然后选择联系人时我找到的所有联系人使用此联系人号码
Cursor cursor = getContentResolver()
.query(android.provider.ContactsContract.CommonDataKinds.Phone.CONTENT_URI,
new String[] {
ContactsContract.CommonDataKinds.Phone.NUMBER,
ContactsContract.CommonDataKinds.Phone.CONTACT_ID,
ContactsContract.CommonDataKinds.Phone.DISPLAY_NAME },
ContactsContract.CommonDataKinds.Phone.CONTACT_ID
+ " = ?",
new String[] { contactsID.get(position) }, null);
contactNumbers = new ArrayList<String>();
while (cursor.moveToNext()) {
contactNumbers.add(cursor.getString(0));
Log.d("number", cursor.getString(0));
}
答
,做在Retrieving a List of Contacts
教程滤波的代码是在这里:
Uri contentUri = Uri.withAppendedPath(Contacts.CONTENT_FILTER_URI, Uri.encode(mSearchString));
在Contacts.CONTENT_FILTER_URI文档它说:
的过滤字符串将被用来接触 的匹配各个部分名称
所以这对你并不好,把它换成:
@Override
public Loader<Cursor> onCreateLoader(int loaderId, Bundle args) {
Uri contentUri = Contacts.CONTENT_URI; // no longer filters
String selection = Contacts.DISPLAY_NAME_PRIMARY + " LIKE %" + mSearchString + "%";
return new CursorLoader(
getActivity(),
contentUri,
PROJECTION,
selection,
null,
null
);
}
在哪里可以使用此代码?您是否检查过样本? –