要获取来电号码,我们使用
TeleponyManager.EXTRA_INCOMING_NUMBER
但如果已将其保存在联系人数据库中,则如何获取来电的显示名称。
答案 0 :(得分:3)
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是来电号码
答案 1 :(得分:0)
在广播接收器中创建一个名为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's GitHub Repository
获取代码快乐编码:D:D