2013-12-10 6 views
9

Для данного номера из моей адресной книги мне нужно искать, если число имеет whatsapp. (Идея состоит в том, чтобы выбрать SMS/WhatsApp для инициирования текстового намерения)Как проверить, включен ли контакт в телефонной книге телефона Android?

Скажем, у меня есть два номера под контактом. И мне нужно знать, в какой из них включен whatsapp.

Приложение «Люди» на Nexus 4 показывает оба контактных номера, А также немного ниже имеет раздел ПОДКЛЮЧЕНИЯ, который показывает только возможный контакт WhatsApp.

Есть ли способ поиска (например, как работает приложение для людей)?

ответ

11

Если вы хотите знать, если этот контакт имеет WhatsApp:

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) 
} 

И найти, к числу которых этот контакт имеет 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

Что такое "THE_CONTACT_DEVICE_ID"? –

+0

contact_id пользователя из таблицы контактов – idog

0

Использование @ метода idog, я улучшил код для работы Полегче. contactID - строковая переменная, подлежащая передаче. Если контакт не имеет WhatsApp возвращает null, в противном случае возвращается с contactID, который передан как переменная.

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; 
} 
Смежные вопросы