2010-06-24 6 views
0

J'ai une application qui montre les messages reçus en tant que Toast via un BroadcastReceiver. J'utilise actuellement la méthode SmsMessage.getOriginatingAddress() qui me donne le numéro de l'expéditeur, comment peut-on le modifier pour obtenir le nom correspondant de l'expéditeur s'il est stocké dans les contacts?en utilisant le gestionnaire de contacts en android

Répondre

1

Vous devrez interroger les contacts pour le reste des données.

Première requête pour l'ID de contacts à l'aide du numéro de téléphone.

Cursor cursor = context.getContentResolver().query(
    Uri.withAppendedPath(Contacts.Phones.CONTENT_FILTER_URL, address), 
    new String[] { Contacts.Phones.PERSON_ID }, null, null, null); 

if (cursor != null) { 
    try { 
    if (cursor.getCount() > 0) { 
     cursor.moveToFirst(); 
     Long id = Long.valueOf(cursor.getLong(0)); 
     if (Log.DEBUG) Log.v("Found person: " + id); 
     return (String.valueOf(id)); 
    } 
    } finally { 
    cursor.close(); 
    } 
} 

Puis recherchez le nom Contacts avec l'ID de la première requête.

Cursor cursor = context.getContentResolver().query(
    Uri.withAppendedPath(Contacts.People.CONTENT_URI, id), 
    new String[] { PeopleColumns.DISPLAY_NAME }, null, null, null); 
if (cursor != null) { 
    try { 
    if (cursor.getCount() > 0) { 
     cursor.moveToFirst(); 
     String name = cursor.getString(0); 
     if (Log.DEBUG) Log.v("Contact Display Name: " + name); 
     return name; 
    } 
    } finally { 
    cursor.close(); 
    } 
} 

Vous pourriez être en mesure de combiner ces deux requêtes somehow.

+0

merci beaucoup :) – pranay

+0

quand je suis en utilisant Contacts.Phones alors je reçois un avertissement que le type est dépréciée, avec quelle autre dois-je utiliser le type ? la méthode suivante donnera-t-elle le résultat souhaité? Uri uri = Uri.withAppendedPath (PhoneLookup.CONTENT_FILTER_URI, Uri.encode (phoneNumber)); resolver.query (uri, nouvelle chaîne [] {PhoneLookup.DISPLAY_NAME}, null, null, null); – pranay

+0

J'ai essayé ceci: Curseur curseur = context.getContentResolver(). Query (Uri.withAppendedPath (PhoneLookup.CONTENT_FILTER_URI, adresse), nouvelle chaîne [] {PhoneLookup.DISPLAY_NAME}, null, null, null); mais en cours d'exécution de l'application, je reçois une Exception Null Pointer dans cette ligne – pranay

Questions connexes