安卓 - WhatsApp 群组 ID / 开放群聊

9

在长时间的谷歌搜索后,我并没有得到我所希望的结果,我有两个问题关于从另一个Android应用程序访问WhatsApp。

首先,我想解释一下我的当前开发状态:

编写了一个应用程序,可以通过WhatsApp共享一些文本。该应用程序正好做到了它应该做的事情(因为我完全是新手Android开发者)。我找到的第一种方法是在WhatsApp的“Android开发人员FAQ”中描述的。它创建了一个新的意图,填充应该发送的文本,并打开联系人选择器:

int pos = 0; //0 is just an example value
Intent sendIntent = new Intent();
sendIntent.setAction(Intent.ACTION_SEND);
PushAlert pa = pushAlerts.get(pos); //get my text object from ArrayList
sendIntent.setPackage("com.whatsapp"); //directly choose WhatsApp as sharing app
sendIntent.putExtra(Intent.EXTRA_TEXT, "*" + pa.getTitle() + " * \n +" + pa.getContent()); //filling 
sendIntent.setType("text/plain");
startActivity(sendIntent); //Open contact picker

我搜索了很多,最终找到了一种方法(代码片段),可以打开特定的个人聊天,并预填我想要分享的文本:

private void openWhatsAppChat(){
  Intent sendIntent = new Intent("android.intent.action.SEND");
  sendIntent.setComponent(new ComponentName("com.whatsapp","com.whatsapp.ContactPicker"));
  sendIntent.setType("text");
  sendIntent.putExtra("jid", PhoneNumberUtils.stripSeparators("phone number")+"@s.whatsapp.net"); //number without '+' prefix and without '0' after country code
  sendIntent.putExtra(Intent.EXTRA_TEXT,"sample text you want to send along with the image");
  startActivity(sendIntent);
}

我的问题是:

  1. 如何获取WhatsApp群组的ID?
  2. 我能否打开群聊并在方法2中用群组ID替换电话号码,然后粘贴我的文本?或者还有其他方法可以打开并预填充群聊吗?
3个回答

6

您需要使用群组链接。
当用户安装您的应用程序时,您应该要求他们从Whatsapp群组信息中复制群组链接,然后将其存储以直接从您的应用程序访问该群组。
该链接仅由群组管理员可见,因此如果用户不是管理员,则应指示他们向管理员请求链接。
尽管这个链接是为邀请人加入群组而设计的,但它使得打开所需的群组聊天变得更容易。

Intent intentWhatsapp = new Intent(Intent.ACTION_VIEW);
String url = "https://chat.whatsapp.com/<group_link>";
intentWhatsapp.setData(Uri.parse(url));
intentWhatsapp.setPackage("com.whatsapp");
startActivity(intentWhatsapp);

这段代码可以打开指定的群聊,但是我无法预填文本到聊天中。有没有办法也填充文本?尝试了与帖子中相同的方法(intent.putExtra(Intent.EXTRA_TEXT, "myText")),但这并不起作用。 - HSV_DO
很抱歉,目前的WhatsApp“API”无法完成这项任务。这是自动化群聊最接近的方式。我理解Facebook的人试图防止WhatsApp垃圾邮件等问题,但他们应该明白我们程序员需要更开放的API。 - Ramiro
不过无论如何感谢你!如果你将来找到了一种方法,很棒的话请在这里分享一下。 - HSV_DO
有任何更新吗?我也在尝试实现同样的功能,但它只会打开群组而不发送任何消息。 - suv
在代码中,我如何找到可用的组以及每个组中有哪些人? - android developer

0
我使用Tasker获取群组的jid,特别是我不是管理员的群组。你需要手动完成。所以如果你有10个群组,你需要做10次。在Tasker中创建一个任务,点击应用程序,点击快捷方式,点击放大镜,搜索群组,点击群组,jid将显示在长字符串内。它应该以%40结尾,因此需要手动提取jid。

1
我做不到这个 :( - Raúl Martín

0
为了获取我所属的群组(甚至已经离开的群组)的信息,我使用了一个非官方的解决方案。我需要一套功能来自动化WhatsApp中的群组,所以这个解决方案非常适合我。具体来说,为了获取群组的ID,我使用了"获取群组"的方法。大致的代码如下:
```python import requests url = "https://gate.whapi.cloud/groups?token=your_token"
headers = {"accept": "application/json"}
response = requests.get(url, headers=headers) print(response.text) ```
响应中包含了群组名称、群组ID、创建日期、最后一条消息、所有成员、图标等等许多其他信息。实际上,你可以在这里https://whapi.readme.io/reference/getgroups自行测试,但是你需要一个服务的令牌。
然后,你可以按照自己的方式处理这些信息。我有一个参与者计数和分发系统,还有自动创建新群组的功能。有很多自动化的方法,你可以在这里查看:https://whapi.cloud/docs#/Groups/getGroups

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接