How to Check if a contact on android phone book has whatsapp enabled?

前端 未结 3 493
醉话见心
醉话见心 2021-01-30 18:35

For a given number from my address book, I need to look-up if the number has whatsapp enabled. (The idea is to choose SMS/WhatsApp for initiating a text intent)

Lets say

相关标签:
3条回答
  • 2021-01-30 19:36

    If you want to know if this contact has 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);
    }
    

    And to find to which number of this contact has 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);
    }
    
    0 讨论(0)
  • 2021-01-30 19:37

    Using @idog's method, I improved code to work easier. contactID is a string variable to be passed. If contact hasn't WhatsApp returns null, otherwise returns with contactID which has been passed as variable.

    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;
    }
    
    0 讨论(0)
  • 2021-01-30 19:37
    public int hasWhatsApp(String contactID) {
            int whatsAppExists = 0;
            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) {
                    whatsAppExists = 1;
                }
                cursor.close();
            }
            return whatsAppExists;
        }
    
    0 讨论(0)
提交回复
热议问题