2016-07-15 34 views
0

Ich benutze unten Code für eingehende Rufnummer erhalten, die gut funktioniert.Kontaktname mit Telefonnummer nicht funktioniert

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

Im nächsten Schritt habe ich versucht, contatc Namen zu erhalten Methode 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; 
} 

aber die Methode immer wieder zurückkehren null (meine eingehenden Anruf ist einer meiner Kontakte und seine Nummer und number String sind Genau das. Ich weiß nicht, warum dieser Code nicht funktioniert. Ich schätze wirklich jede mögliche Hilfe, die Sie zur Verfügung stellen können.

Antwort

0

Versuchen Sie, die Erlaubnis im Manifest hinzuzufügen:

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

Danke @chengsam. Ich habe es vorher hinzugefügt. Wenn wir diese Berechtigung nicht hinzufügen, wird die App aufgrund einer Sicherheitsausnahme abgestürzt sein. –

+0

Sie können sich auf diese [Frage] beziehen (http://stackoverflow.com/questions/36700475/getting-null-value-while-retrieving-the-contact-name-from-contact-email) – chengsam