【发布时间】:2016-01-28 23:13:50
【问题描述】:
我一直在尝试通过其号码获取联系人,这与您在股票拨号器上拨打号码时 Android 实施的方式相同。如果您熟悉,您就会知道,当您拨号时,它开始显示包含这些号码的匹配项(例如,在拨打 3412 时 913284912 会匹配)。 (不确定这种搜索方式是否仅在 5.x+ 上实现)
我得到了这个工作,但只有当号码与下面代码的联系人完全相等时:
private Cursor getContacts(String number) {
// Run query
Uri uri = Uri.withAppendedPath(ContactsContract.PhoneLookup.CONTENT_FILTER_URI, Uri.encode(number.trim()));
String[] projection = new String[]{ContactsContract.PhoneLookup.DISPLAY_NAME,
ContactsContract.PhoneLookup.PHOTO_THUMBNAIL_URI, ContactsContract.PhoneLookup._ID};
return getContext().getContentResolver().query(
uri,
projection,
null,
null,
null
);
}
我很难找到解决方案,因为每个人都使用它来获得联系。但因为我不想要完全匹配,所以这对我不起作用。
提前致谢。
【问题讨论】:
-
PhoneLookup 是要使用的正确 API,但当您输入“3412”时,913284912 将无法匹配。它需要匹配整个搜索文本。
标签: android android-contentprovider android-contacts