簡體   English   中英

如何獲取whats應用聯系人的電話號碼

[英]how to get whats app contacts' phone numbers

嗨,我目前正在嘗試使用我正在開發的應用程序實施 WhatsApp。 我希望能夠顯示用戶擁有的所有 WhatsApp 聯系人及其電話號碼。 到目前為止,我已經能夠獲取他們 WhatsApp 聯系人的姓名,但我無法獲取他們 WhatsApp 聯系人的電話號碼,這是我用來獲取用戶 WhatsApp 聯系人列表的代碼。

cursor = cr.query(ContactsContract.RawContacts.CONTENT_URI, new String[] {
    ContactsContract.RawContacts.CONTACT_ID, ContactsContract.RawContacts.DISPLAY_NAME_PRIMARY
}, ContactsContract.RawContacts.ACCOUNT_TYPE + "= ?", new String[] {
    "com.whatsapp"
}, null);
int contactNameColumn = cursor.getColumnIndex(ContactsContract.RawContacts.CONTACT_ID);
while (cursor.moveToNext()) {
    String name = cursor.getString(contactNameColumn);
    System.out.println(name);
    Cursor pCur = cr.query(ContactsContract.CommonDataKinds.Phone.CONTENT_URI, null, ContactsContract.CommonDataKinds.Phone.CONTACT_ID + " = ?", new String[] {
        Integer.toString(contactNameColumn)
    }, null);
    while (pCur.moveToNext()) {
        String phonenumber = pCur.getString(pCur.getColumnIndex(ContactsContract.CommonDataKinds.Phone.NUMBER));
        System.out.println("PHONE: " + phonenumber);
    }
    pCur.close();
}
cursor.close();

當我打印出它正確打印出來的名稱時,我然后使用該 id 查詢數據表以獲取他們的電話號碼,但這總是返回null ,任何人都可以幫助我。

謝謝

像這樣改變你的pCur

     if (name != null) {
                    Cursor pCur = getContentResolver().query(ContactsContract.CommonDataKinds.Phone.CONTENT_URI, null, ContactsContract.CommonDataKinds.Phone.CONTACT_ID + " = ?", new String[]{name}, null);
                    //Iterate cursor here...
                    }

最好為變量使用正確的命名約定。 為什么,因為這里的變量name代表了聯系人的 id。

您可以閱讀所有具有 whatsapp 的聯系人,例如 -

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<Int> myWhatsappContacts = new ArrayList<String>();
int contactNameColumn = c.getColumnIndex(RawContacts.DISPLAY_NAME_PRIMARY);
while (c.moveToNext())
{
    // You can also read RawContacts.CONTACT_ID to read the
    // ContactsContract.Contacts table or any of the other related ones.        String phonenumber = pCur.getString(pCur.getColumnIndex(ContactsContract.CommonDataKinds.Phone.NUMBER));

    myWhatsappContacts.add(phonenumber);
}

使用以下代碼從電話簿獲取帶有關聯 WhatsApp 號碼的 WhatsApp 聯系人:

private void displayWhatsAppContacts() {

    final String[] projection = {
            ContactsContract.Data.CONTACT_ID,
            ContactsContract.Data.DISPLAY_NAME,
            ContactsContract.Data.MIMETYPE,
            "account_type",
            ContactsContract.Data.DATA3,
    };

    final String selection = ContactsContract.Data.MIMETYPE + " =? and account_type=?";
    final String[] selectionArgs = {
            "vnd.android.cursor.item/vnd.com.whatsapp.profile",
            "com.whatsapp"
    };

    ContentResolver cr = getContentResolver();
    Cursor c = cr.query(
            ContactsContract.Data.CONTENT_URI,
            projection,
            selection,
            selectionArgs,
            null);

    while (c.moveToNext()) {
        String id = c.getString(c.getColumnIndex(ContactsContract.Data.CONTACT_ID));
        String number = c.getString(c.getColumnIndex(ContactsContract.Data.DATA3));
        String name = c.getString(c.getColumnIndex(ContactsContract.Contacts.DISPLAY_NAME));

        Log.v("WhatsApp", "name " +name + " - number - "+number);

    }
    Log.v("WhatsApp", "Total WhatsApp Contacts: " + c.getCount());
    c.close();
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM