我想知道如何将文本发送到特定的WhatsApp联系人.我找到了一些代码来查看特定联系人,但不发送数据.
Cursor c = getContentResolver().query(ContactsContract.Data.CONTENT_URI,
new String[] { ContactsContract.Contacts.Data._ID }, ContactsContract.Data.DATA1 + "=?",
new String[] { id }, null);
c.moveToFirst();
Intent i = new Intent(Intent.ACTION_VIEW, Uri.parse("content://com.android.contacts/data/" + c.getString(0)));
startActivity(i);
c.close();
这适用于查看whatsapp-contact,但我现在如何添加一些文本?或者Whatsapp开发人员没有实现这样的api?
解决方法:
我认为答案是你的问题和这个答案的混合:https://*.com/a/15931345/734687
所以我会尝试以下代码:
>将ACTION_VIEW更改为ACTION_SENDTO
>像你一样设置Uri
>将包设置为whatsapp
Intent i = new Intent(Intent.ACTION_SENDTO, Uri.parse("content://com.android.contacts/data/" + c.getString(0)));
i.setType("text/plain");
i.setPackage("com.whatsapp"); // so that only Whatsapp reacts and not the chooser
i.putExtra(Intent.EXTRA_SUBJECT, "Subject");
i.putExtra(Intent.EXTRA_TEXT, "I'm the body.");
startActivity(i);
我查看了Whatsapp清单,发现ACTION_SEND已注册到活动ContactPicker,因此对您没有帮助.但是,ACTION_SENDTO已注册到活动com.whatsapp.Conversation,这听起来更适合您的问题.
Whatsapp可以作为发送短信的替代品,所以它应该像短信一样工作.如果未指定所需的应用程序(通过setPackage),Android将显示应用程序选择器.因此,您应该查看通过意图发送SMS的代码,然后提供其他包信息.
Uri uri = Uri.parse("smsto:" + smsNumber);
Intent i = new Intent(Intent.ACTION_SENDTO, uri);
i.putExtra("sms_body", smsText);
i.setPackage("com.whatsapp");
startActivity(i);
首先尝试将ACTION_SEND意图替换为ACTION_SENDTO.如果这不起作用,则提供额外的额外sms_body.如果这不起作用,请尝试更改uri.
更新
我试图自己解决这个问题,但无法找到解决方案. Whatsapp正在打开聊天记录,但不接收文本并发送.似乎这个功能没有实现.