繁体   English   中英

如何意图在 Webview 中打开 Whatsapp?

[英]How to Intent Whatsapp Opened In Webview?

我想使用Whatsapp作为客户服务。 我的应用程序是一个webview ,当客户要联系页面时,会看到一个数字whatsapp和 Chat Us 按钮与客户服务聊天。

当客户点击按钮时,他们没有直接打开whatsapp并显示ERR_UNKOWN_SCHEME_URL

我正在使用kotlin将 android studio 和webview用于我的应用程序。

这是我的活动:

class MainActivity : AppCompatActivity() {
    internal var webView: WebView? = null
    private var mCM: String? = null
    private var mUM: ValueCallback<Uri>? = null
    private var mUMA: ValueCallback<Array<Uri?>>? = null


    @SuppressLint("SetJavaScriptEnabled", "WrongViewCast")
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)

        webView = findViewById(R.id.ifView) as WebView
        assert(webView != null)
        val webSettings = webView!!.settings
        webSettings.javaScriptEnabled = true
        webSettings.allowFileAccess = true

        if (Build.VERSION.SDK_INT >= 21) {
            webSettings.mixedContentMode = 0
            webView!!.setLayerType(View.LAYER_TYPE_HARDWARE, null)
        }
        else {
            webView!!.setLayerType(View.LAYER_TYPE_SOFTWARE, null)
        }
        webView!!.webViewClient = Callback()
        webView!!.loadUrl("http://example.com") //add your test web/page address here
        webView!!.setWebChromeClient(object : WebChromeClient() {

    SuppressWarnings("deprecation")
    @Override
    fun shouldOverrideUrlLoading(view: WebView, url: String?): Boolean
    {
        if (url != null && url.startsWith("whatsapp://")) {
            val sendIntent = Intent();
            sendIntent.setAction(Intent.ACTION_SEND);
            sendIntent.putExtra(Intent.EXTRA_TEXT, "Moon TV");
            sendIntent.setType("text/plain");
            sendIntent.setPackage("com.whatsapp");
            startActivity(sendIntent)
            return true
            /* ContextCompat.startActivity(sendIntent);return true;*/

        } else {
            return false;
        }
    }

这是我的Callback()代码:

inner class Callback : WebViewClient() {
        override fun onReceivedError(view: WebView, errorCode: Int, description: String, failingUrl: String) {
            Toast.makeText(applicationContext, "No Internet Access!", Toast.LENGTH_SHORT).show()
            view.loadUrl("file:///android_asset/error.html")            
        }
}

这是打开直接聊天Whatsapps客户服务的 php 代码

    <a href="https://api.whatsapp.com/send?phone=628118906771&amp;text=Halo%20Example," class="btn btn-success btn-md">Visit WhatsApp</a>

我想要 Webview 中的 Intent WhatsApp。 谢谢你。

从您的MyActivity中删除:

SuppressWarnings("deprecation")
    @Override
    fun shouldOverrideUrlLoading(view: WebView, url: String?): Boolean
    {
        if (url != null && url.startsWith("whatsapp://")) {
            val sendIntent = Intent();
            sendIntent.setAction(Intent.ACTION_SEND);
            sendIntent.putExtra(Intent.EXTRA_TEXT, "Moon TV");
            sendIntent.setType("text/plain");
            sendIntent.setPackage("com.whatsapp");
            startActivity(sendIntent)
            return true
            /* ContextCompat.startActivity(sendIntent);return true;*/

        } else {
            return false;
        }

并且,您在Callback()函数或inner class Callback添加此代码:

override fun shouldOverrideUrlLoading(view: WebView, url: String?): Boolean {

            var overrideUrlLoading = false

            if (url != null && url.startsWith("whatsapp://")) {

                view.context.startActivity(Intent(Intent.ACTION_VIEW, Uri.parse(url)))

                overrideUrlLoading = true

            } else {

                view.loadUrl(url)
            }

            return overrideUrlLoading
        }

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM