在我的应用中,我从联系人数据库中获取呼叫者的姓名并将其读出。用户与我联系,提供了123-456-7890格式的号码,该号码不起作用。我自己测试了这个,但不明白为什么它不起作用。
我正在使用的完整代码here,但相关部分如下:
Cursor c = getContentResolver().query(Contacts.Phones.CONTENT_URI,
new String[] {Contacts.Phones.DISPLAY_NAME},
selection,
args, null);
答案 0 :(得分:1)
查看PhoneLookup。
答案 1 :(得分:1)
此代码段来自我的应用,它使用了Memoization ...
static HashMap<String,String> phone2Name = new HashMap<String, String>();
public static String getDisplayNameFromPhoneNo(Context ctx,String phoneNo) {
if(phone2Name.containsKey(phoneNo))
{
return phone2Name.get(phoneNo);
}
if(phoneNo.trim().length() == 0) return null;
String[] projection = new String[] {
Contacts.Phones.DISPLAY_NAME,
Contacts.Phones.NUMBER };
Uri contactUri = Uri.withAppendedPath(Contacts.Phones.CONTENT_FILTER_URL, Uri.encode(phoneNo));
Cursor c = ctx.getContentResolver().query(contactUri, projection, null,
null, null);
if (c.moveToFirst()) {
String name = c.getString(c
.getColumnIndex(Contacts.Phones.DISPLAY_NAME));
phone2Name.put(phoneNo, name);
return name;
}
return null;
}