android – 以编程方式将文本发送到特定联系人(whatsapp)

我想知道如何将文本发送到特定的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正在打开聊天记录,但不接收文本并发送.似乎这个功能没有实现.

上一篇:解决tomcat占用8080端口问题图文教程


下一篇:怎么解决tomcat占用8080端口问题图文教程