4

特定の連絡先番号がWhatsAppに関連付けられているかどうかを識別できるAndroidプログラムを作成しようとしています。特定の連絡先名に WhatsApp アカウントがあるかどうかを調べることができました。その連絡先名に対応するどの連絡先が WhatsApp を持っているかを調べるにはどうすればよいですか? 現在、次のコードを使用しています。

public void identifyWhatsappContact() {
    Cursor c = ctx.getContentResolver().query(
            RawContacts.CONTENT_URI,
            new String[] { RawContacts.CONTACT_ID, RawContacts.DISPLAY_NAME_PRIMARY },
            RawContacts.ACCOUNT_TYPE + "= ? AND " + StructuredName.DISPLAY_NAME_PRIMARY + " = ?",
            new String[] { "com.whatsapp", "John Doe" },
            null);

    ArrayList<String> myWhatsappContacts = new ArrayList<String>();
    int contactNameColumn = c.getColumnIndex(RawContacts.DISPLAY_NAME_PRIMARY);
    while (c.moveToNext())
    {
        myWhatsappContacts.add(c.getString(contactNameColumn));
        Log.v("WHATSAPP", c.getString(contactNameColumn)+"");
    }
}

「John Doe」が WhatsApp を持っているかどうかは識別できますが、「John Doe」のどの電話番号が WhatsApp を持っているかはわかりません (連絡先に複数の電話番号があると仮定します)。誰でも私を助けてもらえますか?ここで解決策を既に試しましたが、うまくいきません。

4

1 に答える 1

7

この例では、連絡先名のすべての WhatsApp 番号を抽出します。

public void getWhatsAppNumbers(String contactName) {
    Cursor cursor1 = getContentResolver().query(
            ContactsContract.RawContacts.CONTENT_URI,
            new String[]{ContactsContract.RawContacts._ID},
            ContactsContract.RawContacts.ACCOUNT_TYPE + "= ? AND " + ContactsContract.CommonDataKinds.StructuredName.DISPLAY_NAME_PRIMARY + " = ?",
            new String[]{"com.whatsapp", contactName},
            null);

    while (cursor1.moveToNext()) {
        String rawContactId = cursor1.getString(cursor1.getColumnIndex(ContactsContract.RawContacts._ID));

        Cursor cursor2 = getContentResolver().query(
                ContactsContract.Data.CONTENT_URI,
                new String[]{ContactsContract.Data.DATA3},
                ContactsContract.Data.MIMETYPE + " = ? AND " + ContactsContract.Data.RAW_CONTACT_ID + " = ? ",
                new String[]{"vnd.android.cursor.item/vnd.com.whatsapp.profile", rawContactId},
                null);

        while (cursor2.moveToNext()) {
            String phoneNumber = cursor2.getString(0);

            if (TextUtils.isEmpty(phoneNumber))
                continue;

            if (phoneNumber.startsWith("Message "))
                phoneNumber = phoneNumber.replace("Message ", "");

            Log.d("whatsapp", String.format("%s - %s", contactName, phoneNumber));
        }
    }
}
于 2015-05-22T15:59:26.987 に答える