2016-07-15 1 views
0

J'utilise le code ci-dessous pour obtenir le numéro d'appel entrant qui fonctionne bien.obtenir le nom de contact en utilisant le numéro de téléphone ne fonctionne pas

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

À l'étape suivante, j'ai essayé d'obtenir le nom contatc en utilisant la méthode 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; 
} 

mais la méthode retour toujours null (mon appel entrant est l'un de mes contacts et son numéro et la chaîne number sont Je ne sais pas pourquoi ce code ne fonctionne pas.J'apprécie vraiment toute aide que vous pouvez fournir

Répondre

0

Essayez d'ajouter la permission dans le manifeste:

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

Merci @chengsam. Je l'ai ajouté avant. Si nous n'ajoutons pas cette autorisation, l'application sera plantée en raison d'une exception de sécurité. –

+0

Vous pouvez vous référer à cette [question] (http://stackoverflow.com/questions/36700475/getting-null-value-while-retrieving-the-contact-name-from-contact-email) – chengsam