获取联系人姓名使用电话号码不起作用
问题描述:
我正在使用下面的代码来获取可以正常工作的来电号码。获取联系人姓名使用电话号码不起作用
String number = intent.getExtras().getString(TelephonyManager.EXTRA_INCOMING_NUMBER);
在接下来的步骤中,我尝试使用方法getContactName(mContext,number)
得到contatc名称:
public static String getContactName(Context context, String phoneNumber) {
ContentResolver cr = context.getContentResolver();
Uri uri = Uri.withAppendedPath(ContactsContract.PhoneLookup.CONTENT_FILTER_URI, Uri.encode(phoneNumber));
Cursor cursor = cr.query(uri, new String[]{ContactsContract.PhoneLookup.DISPLAY_NAME}, null, null, null);
if (cursor == null) {
return null;
}
String contactName = null;
if(cursor.moveToFirst()) {
contactName = cursor.getString(cursor.getColumnIndex(ContactsContract.PhoneLookup.DISPLAY_NAME));
}
if(cursor != null && !cursor.isClosed()) {
cursor.close();
}
return contactName;
}
但该方法总是返回null
(我的来电是我的联系人之一,其数量和number
串是完全一样,我不知道为什么这个代码不起作用,我真的很感谢你们提供的任何帮助,
答
尝试在清单中添加权限:
<uses-permission android:name="android.permission.READ_CONTACTS"/>
谢谢@chengsam。我之前添加了它。如果我们不添加此权限,则应用程序将因安全异常而崩溃。 –
你可以参考这个[问题](http://stackoverflow.com/questions/36700475/getting-null-value-while-retrieving-the-contact-name-from-contact-email) – chengsam