【问题标题】:getting contact name using phone number not working使用电话号码获取联系人姓名不起作用
【发布时间】:2016-07-15 15:23:07
【问题描述】:

我正在使用下面的代码来获取来电号码,效果很好。

String number = intent.getExtras().getString(TelephonyManager.EXTRA_INCOMING_NUMBER);

在下一步中,我尝试使用方法getContactName(mContext,number) 获取联系人名称:

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

【问题讨论】:

    标签: android android-contacts telephony contactscontract


    【解决方案1】:

    尝试在 Manifest 中添加权限:

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

    【讨论】:

    • 谢谢@chengsam。我之前加过。如果我们不添加这个权限,应用会因为安全异常而崩溃。
    • 你可以参考这个question
    猜你喜欢
    • 2015-06-01
    • 1970-01-01
    • 1970-01-01
    • 2014-05-29
    • 2011-10-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多