【问题标题】:How to create a button of whatssap to send a message to a specific contact in my android app? [duplicate]如何创建一个whatsapp按钮向我的Android应用程序中的特定联系人发送消息? [复制]
【发布时间】:2020-06-17 05:24:43
【问题描述】:

这是我将我的网站调用到 webview 的代码:

class MainActivity : AppCompatActivity() {
    var website = "https://serrajimmobilier.ma/"
    override fun onCreate(savedInstanceState: Bundle?) {
            super.onCreate(savedInstanceState)
            supportRequestWindowFeature(Window.FEATURE_NO_TITLE);
            setContentView(R.layout.activity_main)
    webView.loadUrl(website)
            webView.settings.javaScriptEnabled = true;
            webView.webViewClient = CallBack()}
    class CallBack : WebViewClient (){
    override fun shouldOverrideUrlLoading(view: WebView?, request: WebResourceRequest): Boolean {
                return false;}}}

问题是当我导出我的 apk 时,whatssap 按钮不起作用error when I click into button whatssap

【问题讨论】:

标签: java android kotlin webview whatsapp


【解决方案1】:

您的问题是您正在使用 WebView,并且 WebView 尝试仅通过链接打开 Whatsapp 应用程序。

您可以覆盖 shouldOverrideUrlLoading 方法,以便如果 url 以 whatsapp 架构开头,则为 whatsapp 创建一个意图:

@Override
fun shouldOverrideUrlLoading(view: WebView, url: String?): Boolean {
    if (url != null && url.startsWith("whatsapp://")) {
        val txtPattern = "&text=([^&]+)".toRegex()
        val match = pattern.find(txtPattern)
        val sendIntent = Intent()
        sendIntent.setAction(Intent.ACTION_SEND)
        sendIntent.putExtra(Intent.EXTRA_TEXT, match?.value :? "Extra text")
        sendIntent.setType("text/plain")
        sendIntent.setPackage("com.whatsapp")
        startActivity(sendIntent)
        return true
    } else {
        // Whatsapp is not installed
        return false
    }
}

更新

要向特定电话号码发送消息,请尝试以下操作:

@Override
fun shouldOverrideUrlLoading(view: WebView, url: String?): Boolean {
    if (url != null && url.startsWith("whatsapp://")) {
        val patternPhone = "phone=([^&]+)".toRegex()
        val matchPhone = pattern.find(patternPhone)
        val uri = Uri.parse("smsto:" + matchPhone?.value)
        val sendIntent = Intent(Intent.ACTION_SENDTO, uri)
        sendIntent.setPackage("com.whatsapp")
        val shareIntent = Intent.createChooser(sendIntent, null)
        startActivity(shareIntent)
        return true
    } else {
        // Whatsapp is not installed
        return false
    }
}

【讨论】:

  • 你能告诉我在哪里可以添加目标号码吗?在您的代码中
  • 它将打开带有文本的whatsapp应用程序,然后您选择要将其发送给哪个联系人(或组)
  • 这里有集成whatsapp的代码(java中):faq.whatsapp.com/en/android/28000012好像没有电话号码,抱歉
  • 所以我的目的是联系特定的人,因为我的网站已经显示serrajimmobilier.ma你可以点击whatssap按钮查看
  • 好的,根据stackoverflow.com/questions/15462874/… 有一种方法可以向whatsapp 中的特定号码发送消息,我已尝试将其调整为shouldOverrideUrlLoading 方法。查看更新。正则表达式应该从 url 获取您的电话号码,但如果您提供一个默认号码以防它不存在,那就太好了
猜你喜欢
  • 1970-01-01
  • 2016-07-20
  • 2013-09-24
  • 2013-10-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-09-19
相关资源
最近更新 更多