我正在使用Android Wildfire,我使用以下代码查找现有电话号码的联系人姓名。
private String getContactNameFromNumber(String number) {
String[] projection = new String[] { Contacts.Phones.DISPLAY_NAME,
Contacts.Phones.NUMBER };
Uri contactUri = Uri.withAppendedPath(Contacts.Phones.CONTENT_FILTER_URL, Uri.encode(number));
Log.d(TAG, contactUri.toString());
// query time
Cursor c = context.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(Contacts.Phones.DISPLAY_NAME));
Log.d(TAG, name);
return name;
}
// return null if no match was found
return null;
}
我无法解析联系人姓名。我是这个话题的新手,我们将不胜感激。提前谢谢了。 logcat输出显示以下内容
11-14 13:45:35.879: DEBUG/Test(3342): content://contacts/phones/filter/%2B919773653345
答案 0 :(得分:1)
我认为您的问题是您没有正确拨打联系人。 尝试更改
Uri contactUri = Uri.withAppendedPath(Contacts.Phones.CONTENT_FILTER_URL, Uri.encode(number));
到
Uri lookupUri = Uri.withAppendedPath(Contacts.CONTENT_LOOKUP_URI, lookupKey)
Cursor c = getContentResolver().query(lookupUri, projection, null, null, null);
try {
c.moveToFirst();
String displayName = c.getString(0);
} finally {
c.close();
}
答案 1 :(得分:1)
不推荐您获取联系人的方法。除非您使用旧手机进行编程,否则应使用ContactsContract.PhoneLookup。
正如LucaB所说,光标可能应该关闭。