我可以从android webview打开whatsapp应用程序吗

问题描述 投票:0回答:7

我制作了一个网站的网络视图。现在我想将我的网络视图中的一些数据共享到 Whatsapp 应用程序。我能够打开 Whatsapp 网页,但我的客户希望我打开 Whatsapp 应用程序而不是 Whatsapp 网页。我怎样才能做到这一点?

这就是我在我的网站中打开 Whatsapp 网站所做的事情:

<a class="social-icon whatsapp" 
  href="javascript:popWin('https://api.whatsapp.com/send?text=Product%20Name:-<?php echo $productName; ?>.%20Product%20link:-<?php echo $productUrl; ?>', 'whatsapp', 'width=640, height=480, left=0, top=0, location=no, status=yes, scrollbars=yes, resizable=yes');"
  title="<?php echo $this->__('Share on Whatsapp') ?>" 
  data-action="share/whatsapp/share">
  <span><i class="fa fa-whatsapp"></i></span>
</a>
php android webview
7个回答
13
投票
@Override
        public boolean shouldOverrideUrlLoading(WebView wv, String url) {
            if(url.startsWith("tel:") || url.startsWith("whatsapp:")) {
                Intent intent = new Intent(Intent.ACTION_VIEW);
                intent.setData(Uri.parse(url));
                startActivity(intent);
                return true;
            }
            return false;
        }

将此代码放入您的 mWebView.setWebViewClient(new WebViewClient() 中。它将完美适用于所有链接,如 tel:whatsapp: 等。


7
投票
   webView.setWebViewClient(new WebViewClient() {

        @Override
        public boolean shouldOverrideUrlLoading(WebView wv, String url) {
            if(url.startsWith("tel:") || url.startsWith("whatsapp:") || url.startsWith("intent://") || url.startsWith("http://") ) {
                Intent intent = new Intent(Intent.ACTION_VIEW);
                intent.setData(Uri.parse(url));
                startActivity(intent);
                webView.goBack();
                return true;
            }
            return false;
        }

        @Override
        public void onPageStarted(WebView view, String url, Bitmap favicon) {
            super.onPageStarted(view, url, favicon);

            invalidateOptionsMenu();
        }

        public void onReceivedError(WebView view, int errorCode,
                                    String description, String failingUrl) {
            try {
                invalidateOptionsMenu();
            } catch (Exception e) {

            }

            if (webView.canGoBack()) {
                webView.goBack();
            }

        }


        public void onPageFinished(WebView view, String url) {
            //     pullToRefresh.setRefreshing(false);

            invalidateOptionsMenu();
        }



    });

使用此代码解决了我的问题。


5
投票

使用这个并且工作正常。 (@NSMedia-解决方案) 只要放

'myWebView.goBack();'

返回之前(不要在whatsApp网络中导航)

myWebView.setWebViewClient(new WebViewClient(){
            @Override
            public boolean shouldOverrideUrlLoading(WebView wv, String url) {
                if(url.startsWith("tel:") || url.startsWith("whatsapp:")) {
                    Intent intent = new Intent(Intent.ACTION_VIEW);
                    intent.setData(Uri.parse(url));
                    startActivity(intent);
                    myWebView.goBack();
                    return true;
                }
                return false;
            }
        });

4
投票

你可以使用,它对我有用:

选项第一-

<a href="whatsapp://send?text=Hello friend!" data-action="share/whatsapp/share">Share</a>

选项二-

<a href="https://api.whatsapp.com/send?text=Hello friend!" data-action="share/whatsapp/share">Share</a> 

这两种选择都适合我..

如果您无法正常工作,请更新您手机的 Android 版本并更新 Whatsapp 版本


2
投票

我尝试了一下,成功了:

<a href="intent://send?text=Hello#Intent;scheme=whatsapp;package=com.whatsapp;end" class="button">Go to Whatsapp/>

请参阅 Chrome 相关文档此处


0
投票

更新了shouldOverrideUrlLoading的新版本

@Override
public boolean shouldOverrideUrlLoading(WebView view, WebResourceRequest request) {
    String url = request.getUrl().toString();
    if (url.endsWith(".pdf")) {
        view.getContext().startActivity(new Intent(Intent.ACTION_VIEW, Uri.parse(url)));
        return true;
    }else{
        return false;
    }
}

0
投票

使用 Kotlin,你可以这样做:

override fun shouldOverrideUrlLoading(
                view: WebView?,
                request: WebResourceRequest?,
            ): Boolean {
                val url = request?.url.toString()
                /* INTENT WHATSAPP */
                if (url.startsWith("whatsapp://send")) {
                    val intent = Intent(Intent.ACTION_VIEW)
                    intent.data = Uri.parse(url)
                    startActivity(intent)
                    return true
                }

                return super.shouldOverrideUrlLoading(view, request)
            }
© www.soinside.com 2019 - 2024. All rights reserved.