2016-07-15 101 views
0

我正在使用下面的代碼來獲取可以正常工作的來電號碼。獲取聯繫人姓名使用電話號碼不起作用

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串是完全一樣,我不知道爲什麼這個代碼不起作用,我真的很感謝你們提供的任何幫助,

回答

0

嘗試在清單中添加權限:

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

謝謝@chengsam。我之前添加了它。如果我們不添加此權限,則應用程序將因安全異常而崩潰。 –

+0

你可以參考這個[問題](http://stackoverflow.com/questions/36700475/getting-null-value-while-retrieving-the-contact-name-from-contact-email) – chengsam

相關問題