要获取我们使用的来电号码
TeleponyManager.EXTRA_INCOMING_NUMBER
但是当它已经保存在联系人数据库中时如何获取来电的显示名称。
Uri uri = Uri.withAppendedPath(PhoneLookup.CONTENT_FILTER_URI, Uri.encode(newSender));
Cursor cursor = getContentResolver().query(uri, new String[]{PhoneLookup.DISPLAY_NAME}, newSender, null, null );
if(cursor.moveToFirst()){
newSender = cursor.getString(cursor.getColumnIndex(ContactsContract.PhoneLookup.DISPLAY_NAME));
}
cursor.close();
其中 newSender 是传入的电话号码
在广播接收器中创建一个名为 getContactDisplayNamebyNumber 的方法,然后将传入的数字作为参数传递给该方法。该方法将检查号码是否与联系人姓名一起保存在您的手机中,如果是,它将返回联系人姓名,否则将返回未知号码
看看这段代码
public String getContactDisplayNameByNumber(String number,Context context) {
Uri uri = Uri.withAppendedPath(ContactsContract.PhoneLookup.CONTENT_FILTER_URI, Uri.encode(number));
name = "Incoming call from";
ContentResolver contentResolver = context.getContentResolver();
Cursor contactLookup = contentResolver.query(uri, null, null, null, null);
try {
if (contactLookup != null && contactLookup.getCount() > 0) {
contactLookup.moveToNext();
name = contactLookup.getString(contactLookup.getColumnIndex(ContactsContract.Data.DISPLAY_NAME));
// this.id =
// contactLookup.getString(contactLookup.getColumnIndex(ContactsContract.Data.CONTACT_ID));
// String contactId =
// contactLookup.getString(contactLookup.getColumnIndex(BaseColumns._ID));
}else{
name = "Unknown number";
}
} finally {
if (contactLookup != null) {
contactLookup.close();
}
}
return name;
}
从Vinod Dirishala 的 GitHub 存储库获取代码
快乐编码 :D :D