Как проверить, зарегистрирован ли номер в моих контактах в Whatsapp? - PullRequest
0 голосов
/ 14 февраля 2020

Но мне нужно это с номерами с кодами стран (например, начиная с +123 456 78 90 - так я добавляю номер в качестве контакта) Мне нужна функция / класс, чтобы проверить, есть ли у этого номера Whatsapp. Мне нужно это для .apk, который я сделал в Android Studio.

Ответы [ 2 ]

0 голосов
/ 14 февраля 2020
 private void getAllWhatsappNumbers()
{
    //This class provides applications access to the content model.
    ContentResolver cr = context.getContentResolver();

//RowContacts for filter Account Types
    Cursor contactCursor = cr.query(
            ContactsContract.RawContacts.CONTENT_URI,
            new String[]{ContactsContract.RawContacts._ID,
                    ContactsContract.RawContacts.CONTACT_ID},
            ContactsContract.RawContacts.ACCOUNT_TYPE + "= ?",
            new String[]{"com.whatsapp"},
            null);



    if (contactCursor != null) {
        if (contactCursor.getCount() > 0) {
            if (contactCursor.moveToFirst()) {
                do {
                    //whatsappContactId for get Number,Name,Id ect... from  ContactsContract.CommonDataKinds.Phone
                    String whatsappContactId = contactCursor.getString(contactCursor.getColumnIndex(ContactsContract.RawContacts.CONTACT_ID));

                    if (whatsappContactId != null) {
                        //Get Data from ContactsContract.CommonDataKinds.Phone of Specific CONTACT_ID
                        Cursor whatsAppContactCursor = cr.query(
                                ContactsContract.CommonDataKinds.Phone.CONTENT_URI,
                                new String[]{ContactsContract.CommonDataKinds.Phone.CONTACT_ID,
                                        ContactsContract.CommonDataKinds.Phone.NUMBER,
                                        ContactsContract.CommonDataKinds.Phone.DISPLAY_NAME},
                                ContactsContract.CommonDataKinds.Phone.CONTACT_ID + " = ?",
                                new String[]{whatsappContactId}, null);

                        if (whatsAppContactCursor != null) {
                            whatsAppContactCursor.moveToFirst();
                            String id = whatsAppContactCursor.getString(whatsAppContactCursor.getColumnIndex(ContactsContract.CommonDataKinds.Phone.CONTACT_ID));
                            String name = whatsAppContactCursor.getString(whatsAppContactCursor.getColumnIndex(ContactsContract.CommonDataKinds.Phone.DISPLAY_NAME));
                            String number = whatsAppContactCursor.getString(whatsAppContactCursor.getColumnIndex(ContactsContract.CommonDataKinds.Phone.NUMBER));
                            Log.d("log1","no:"+number+"name:"+name);
                            whatsAppContactCursor.close();

                            //Add Number to ArrayList
                            myWhatsappContactsNumbers.add(number);
                        }
                    }
                } while (contactCursor.moveToNext());
                contactCursor.close();
            }
        }
    }
}

С помощью этой функции мы можем получить список контактов в "com.whatsapp". Мы помещаем этот список контактов в список массивов, поэтому нам нужна функция, чтобы показать нам, что число, которое мы отправили, находится в списке ( правда) или нет (ложь). Как мы можем этого достичь?

0 голосов
/ 14 февраля 2020

Нет правильного способа проверить, зарегистрирован ли контакт no в WhatsApp или нет. Но вы можете сделать одну вещь, чтобы проверить, зарегистрировано ли no в WhatsApp или нет.

Просто передайте это число в приложение WhatsApp, используя явное намерение, и после передачи в WhatsApp WhatsApp откроет одно всплывающее окно с надписью " The данное no зарегистрировано в WhatsApp . По этому вы можете узнать, зарегистрировано no или нет.

Intent sendIntent = new Intent("android.intent.action.MAIN");
     sendIntent.putExtra("jid", whatsAppNumber + "@s.whatsapp.net");
     sendIntent.putExtra(Intent.EXTRA_TEXT, "whatsAppMessage");
     sendIntent.setAction(Intent.ACTION_SEND);
     sendIntent.addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION);
     sendIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
     sendIntent.setPackage("com.whatsapp.w4b");
     sendIntent.setType("text/*");
     startActivity(sendIntent);

Здесь «com.whatsapp.w4b» используется для приложения Business WhatsApp, если вы хотите использовать обычный WhatsApp, тогда вам просто нужно изменить com.whatsapp.w4b на com.whatsapp

whatsAppNumber - это номер, на который вы хотите отправить WhatsApp сообщение

или Второй способ найти контакт из внутренних контактных данных

ArrayList<String> whatsAppContact = new ArrayList();
Cursor c = getContentResolver().query(
    RawContacts.CONTENT_URI,
    new String[] { RawContacts.CONTACT_ID, RawContacts.DISPLAY_NAME_PRIMARY },
    RawContacts.ACCOUNT_TYPE + "= ?",
    new String[] { "com.whatsapp" },
    null);
ArrayList<String> myWhatsappContacts = new ArrayList<String>();
int name = 
c.getColumnIndex(RawContacts.DISPLAY_NAME_PRIMARY);
while (c.moveToNext())
{
whatsAppContact.add(c.getString(name));
 }
...