2016-07-15 4 views
0

Я использую ниже код для получения номера входящего звонка, который работает нормально.получение контактного лица с использованием номера телефона не работает

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

В следующем шаге я попытался получить contatc имя с помощью метода 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 струна точно так же. Я не знаю, почему этот код не работает. Я очень ценю любую помощь, которую вы можете предоставить.

ответ

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

 Смежные вопросы

  • Нет связанных вопросов^_^