2013-12-10 45 views
9

对于从我的地址簿中给定的号码,我需要查找该号码是否启用了whatsapp。 (这个想法是选择短信/ WhatsApp发起一个文本意图)如何检查android电话簿上的联系人是否启用了whatsapp?

可以说,我有一个联系人下的两个数字,我需要知道哪一个已启用whatsapp。

Nexus 4上的“People”应用程序显示了两个联系电话号码, 并且稍后还有一个CONNECTIONS部分,该部分仅显示WhatsApp可能的联系人。

有没有一种查找方式(比如People应用程序的功能)?

回答

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; 
} 
相关问题