我在从联系人处获取联系人姓名时遇到问题。我正在制作短信应用程序,如您所知,当您收到短信时,您收到的号码会附带国家/地区代码,但如果您使用国家代码保存在内存中的相同号码,您会如何找到它?
我可以使用国家/地区代码保存该号码,但如果没有国家/地区代码则保存该号码。
这是我的代码:
String[] projection = new String[] {
ContactsContract.CommonDataKinds.Phone.DISPLAY_NAME,
ContactsContract.CommonDataKinds.Phone.NUMBER };
// encode the phone number and build the filter URI
Uri contactUri = Uri.withAppendedPath(ContactsContract.CommonDataKinds.Phone.CONTENT_FILTER_URI, Uri.encode(number));
// query time
Cursor c = getContentResolver().query(contactUri, projection, null,
null, null);
// if the query returns 1 or more results
// return the first result
if (c.moveToFirst()) {
String name = c.getString(c
.getColumnIndex(ContactsContract.CommonDataKinds.Phone.DISPLAY_NAME));
return name;
}
// return the original number if no match was found
return number;
答案 0 :(得分:0)
您应该尝试在选择中使用SQLite LIKE。我没有测试过这个,但你会明白这个想法。该方法接受来自SMS的号码(地址)并尝试将其映射到来自Phone.NUMBER的号码。
private void whateverYouCallMe(String numberWithCode) {
String[] projection = new String[] {
ContactsContract.CommonDataKinds.Phone.DISPLAY_NAME,
ContactsContract.CommonDataKinds.Phone.NUMBER };
String selection = Phone.NUMBER + " LIKE '%?%'" // numberWithCode should supplement the ?
final String[] SELECTION_ARGS = { numberWithCode };
Cursor c = getContentResolver().query(contactUri, projection, selection, SELECTION_ARGS, null);
//etc
}