一个简单的解决方法是,查询ContactContract.Data的_id和MIME类型。
ContentResolver resolver = context.getContentResolver(); cursor = resolver.query( ContactsContract.Data.CONTENT_URI, null, null, null, ContactsContract.Contacts.DISPLAY_NAME);//Now read data from cursor likewhile (cursor.moveTonext()) { long _id = cursor.getLong(cursor.getColumnIndex(ContactsContract.Data._ID)); String displayName = cursor.getString(cursor.getColumnIndex(ContactsContract.Data.DISPLAY_NAME)); String mimeType = cursor.getString(cursor.getColumnIndex(ContactsContract.Data.MIMETYPE)); Log.d("Data", _id+ " "+ displayName + " " + mimeType );}输出将如下所示
12561雪vnd.android.cursor.item / vnd.com.whatsapp.profile
12562雪vnd.android.cursor.item / vnd.com.whatsapp.voip.call
现在,仅将MIME类型为_Id的内容保存在DB或其他地方
vnd.android.cursor.item/vnd.com.whatsapp.voip.call
然后像这样用这些联系人发起Whatsapp呼叫
Intent intent = new Intent();intent.setAction(Intent.ACTION_VIEW);// the _ids you save goes here at the end of /data/12562 intent.setDataAndType(Uri.parse("content://com.android.contacts/data/_id"), "vnd.android.cursor.item/vnd.com.whatsapp.voip.call");intent.setPackage("com.whatsapp");startActivity(intent);


