我想检索与传入电话号码关联的联系人姓名。当我在 broascastreceiver 中处理传入的号码时,有一个带有传入调用者姓名的字符串将对我的项目有很大帮助。
我认为这涉及使用 sql WHERE 子句作为过滤器的查询,但我需要对联系人进行排序吗?一个例子或提示会很有帮助。
最佳答案
虽然这已经回答了,但这里是从号码中获取联系人姓名的完整功能。希望对其他人有所帮助:
public static String getContactName(Context context, String phoneNumber) {
ContentResolver cr = context.getContentResolver();
Uri uri = Uri.withAppendedPath(PhoneLookup.CONTENT_FILTER_URI, Uri.encode(phoneNumber));
Cursor cursor = cr.query(uri, new String[]{PhoneLookup.DISPLAY_NAME}, null, null, null);
if (cursor == null) {
return null;
}
String contactName = null;
if(cursor.moveToFirst()) {
contactName = cursor.getString(cursor.getColumnIndex(PhoneLookup.DISPLAY_NAME));
}
if(cursor != null && !cursor.isClosed()) {
cursor.close();
}
return contactName;
}
[更新基于 Marcus 的评论]
您必须申请此权限:
<uses-permission android:name="android.permission.READ_CONTACTS"/>
关于Android:从电话号码中检索联系人姓名,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3079365/