【问题标题】:Opening a WhatsApp chat with a specific contact by clicking on a button in my app (Kotlin)通过单击我的应用程序(Kotlin)中的按钮打开与特定联系人的 WhatsApp 聊天
【发布时间】:2019-12-21 23:15:26
【问题描述】:

如何通过点击我应用中的按钮打开与特定联系人的 Whatsapp 聊天?

这就是我使用的代码。它会打开 WhatsApp 并让我搜索我想向其发送消息的联系人,但它不会打开带有我提供给它的特定联系人号码的 WhatsApp 聊天。

        whatsappButton.setOnClickListener{
            var con = itemView.context

            val textToShare = "*כח אדם*"
            val phoneNumber = blogPost.phone
            val sendIntent = Intent()

            sendIntent.action = Intent.ACTION_SEND
            sendIntent.type = "text/plain"
            sendIntent.putExtra("jid", phoneNumber+"@s.whatsapp.net")
            sendIntent.putExtra(Intent.EXTRA_TEXT, textToShare)
            val extra = sendIntent.extras
            startActivity(con,sendIntent,extra)
        }

【问题讨论】:

    标签: android kotlin android-intent whatsapp start-activity


    【解决方案1】:

    如果您想通过通讯录应用向特定联系人发送消息,您应该首先获得访问联系人的权限,获取号码并尝试以下操作:

    Intent sendIntent = new Intent("android.intent.action.MAIN");
    sendIntent.setComponent(new  ComponentName("com.whatsapp","com.whatsapp.Conversation"));
    sendIntent.putExtra("jid", PhoneNumberUtils.stripSeparators("YOUR_PHONE_NUMBER")+"@s.whatsapp.net");
    startActivity(sendIntent);
    

    参考:https://stackoverflow.com/a/40285262/2895571

    【讨论】:

      【解决方案2】:

      请查看此答案here 使用以下代码:

      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);
      

      【讨论】:

      • 即使它在 java 中,您也可以在 Kotlin 中轻松复制它。您检查以下内容以使用 Kotlin 发送消息。 here
      【解决方案3】:

      第一种选择:使用 Uri 将 whatsapp 网址转换为按钮:

      open_whatsapp.setOnClickListener {
      
              val url = "https://api.whatsapp.com/send?phone=XXXXXXXXXX"
      
              val openWhatsappIntent = Intent(Intent.ACTION_VIEW)
              openWhatsappInten.data = Uri.parse(url)
              startActivity(openWhatsappInten)
          }
      

      第二个选项;这在网络开发中用作a href

      <a href="https://api.whatsapp.com/send?phone=XXXXXXXX" target="_blank"> Tel: XXX XXXX XX</a>
      

      也许您可以将 Html 格式添加到 TextView (Html.fromHtml()) 并启用可点击链接以打开 whatsapp 应用程序。

      【讨论】:

        【解决方案4】:

        如果您想在 whatsapp 中向特定联系人发送消息,请使用下面的 url 和特定的手机号码到 Intent(包括国家代码)。

        String url = "https://wa.me/"; Intent browserIntent = new Intent(Intent.ACTION_VIEW, Uri.parse(url+mobile_no)); startActivity(browserIntent);

        【讨论】:

        • 通过解释您的答案如何解决相关问题来添加一些上下文,而不是发布仅代码的答案。
        猜你喜欢
        • 2016-09-13
        • 2018-12-08
        • 1970-01-01
        • 2021-09-10
        • 2018-02-26
        • 2016-06-28
        • 2012-04-14
        • 2016-07-20
        • 1970-01-01
        相关资源
        最近更新 更多