有很多关于WhatsApp呼叫/发送给特定用户的问题,该用户假定READ_CONTACTS
权限。
我们的目标是从我们的应用顺利开通WhatsApp视频通话,无需在我们自己的应用中添加/要求任何通讯录权限,让用户手动添加或选择收件人用户。
我似乎无法找到足够的信息来实现以下看似简单的方案之一。
或者,打开WhatsApp在" Calls"上的定位标签(如上图第一张图片)
如果没有找到任何相关信息,我尝试打开联系人选择器,获取所选用户,然后使用tha info 发起视频通话,但是:
调用 WhatsApp自己的选择器,(使用操作Intent.ACTION_PICK
和类别"com.whatsapp"
)我只会获得12354567@s.whatsapp.net
形式的联系人字符串,我发现没有办法用来发起视频通话。所有答案都需要"content://com.android.contacts/data/" + id
(联系人获取id
,我们无法访问)。 intent.getData()
返回null,似乎只有"联系"附加信息中的字符串。
拨打默认联系人选择器,至少在某些手机上它没有提供直接添加联系人的方法(不可接受),并且仍然从中获取ID结果似乎不起作用。以下代码中的startActivity()
不执行任何操作。
protected void onActivityResult(int requestCode, int resultCode, Intent data)
{
if (requestCode == 1 && resultCode == RESULT_OK)
{
Uri result = data.getData();
Cursor cursor = getContentResolver().query(result, null, null, null, null);
if (cursor.moveToFirst())
{
//int idx = cursor.getColumnIndex(ContactsContract.ContactsContacts._ID);
// String id = cursor.getString(idx);
long id = cursor.getLong(cursor.getColumnIndex(ContactsContract.Data._ID));
Intent sendIntent = new Intent();
sendIntent.setAction(Intent.ACTION_VIEW);
sendIntent.setDataAndType(
Uri.parse("content://com.android.contacts/data/" + id),
"vnd.android.cursor.item/vnd.com.whatsapp.voip.call");
sendIntent.setPackage("com.whatsapp");
startActivity(sendIntent);
}
}
super.onActivityResult(requestCode, resultCode, data);
}