2013-12-10 10 views
9

Für eine bestimmte Nummer aus meinem Adressbuch muss ich nachsehen, ob Whatsapp aktiviert ist. (Die Idee ist, SMS/WhatsApp für die Einleitung einer Textabsicht zu wählen)Wie überprüft man, ob ein Kontakt im Android-Telefonbuch whatsapp aktiviert hat?

Lets sagen, ich habe zwei Nummern unter einem Kontakt, und ich muss wissen, welche whatsapp aktiviert hat.

Die App "People" auf dem Nexus 4 zeigt beide Telefonnummern, Und auch ein wenig darunter hat eine CONNECTIONS-Sektion, die nur den WhatsApp möglichen Kontakt zeigt.

Gibt es eine Möglichkeit nachzuschlagen (wie die App "People")?

Antwort

11

Wenn Sie wissen wollen, ob dieser Kontakt WhatsApp hat:

String[] projection = new String[] { RawContacts._ID }; 
String selection = ContactsContract.Data.CONTACT_ID + " = ? AND account_type IN (?)"; 
String[] selectionArgs = new String[] { "THE_CONTACT_DEVICE_ID", "com.whatsapp" }; 
Cursor cursor = activity.getContentResolver().query(RawContacts.CONTENT_URI, projection, selection, selectionArgs, null); 
boolean hasWhatsApp = cursor.moveToNext()); 
if (hasWhatsApp){ 
    String rowContactId = cursor.getString(0) 
} 

Und um herauszufinden, welche Nummer dieses Kontakts WhatsApp

projection = new String[] { ContactsContract.Data.DATA3 }; 
selection = ContactsContract.Data.MIMETYPE + " = ? AND " + ContactsContract.Data.RAW_CONTACT_ID + " = ? "; 
selectionArgs = new String[] { "vnd.android.cursor.item/vnd.com.whatsapp.profile", rawContactId }; 
cursor = CallAppApplication.get().getContentResolver().query(ContactsContract.Data.CONTENT_URI, projection, selection, selectionArgs, "1 LIMIT 1"); 
String phoneNumber = null; 
if (cursor.moveToNext()) { 
    phoneNumber = cursor.getString(0); 
} 
+2

Was ist "THE_CONTACT_DEVICE_ID"? –

+0

Die contact_id des Benutzers aus der Kontakttabelle – idog

0

Mit @ idog Methode hat, verbessert I-Code zu arbeiten einfacher. contactID ist eine String-Variable, die übergeben werden soll. Wenn der Kontakt nicht WhatsApp kehrt null hat, kehrt andernfalls mit contactID, die als Variable übergeben wurde.

public String hasWhatsapp(String contactID) { 
    String rowContactId = null; 
    boolean hasWhatsApp; 

    String[] projection = new String[]{ContactsContract.RawContacts._ID}; 
    String selection = ContactsContract.Data.CONTACT_ID + " = ? AND account_type IN (?)"; 
    String[] selectionArgs = new String[]{contactID, "com.whatsapp"}; 
    Cursor cursor = getActivity().getContentResolver().query(ContactsContract.RawContacts.CONTENT_URI, projection, selection, selectionArgs, null); 
    if (cursor != null) { 
     hasWhatsApp = cursor.moveToNext(); 
     if (hasWhatsApp) { 
      rowContactId = cursor.getString(0); 
     } 
     cursor.close(); 
    } 
    return rowContactId; 
}