使用电话号码获取联系人姓名无效

时间:2016-07-15 15:23:08

标签: android android-contacts telephony contactscontract

我正在使用以下代码获取来电正常的来电号码。

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字符串完全相同。我不知道为什么这段代码不起作用。我非常感谢您提供的任何帮助。

1 个答案:

答案 0 :(得分:0)

尝试在Manifest中添加权限:

<uses-permission android:name="android.permission.READ_CONTACTS"/>