在webview上分享whatsapp

时间:2016-10-12 02:07:19

标签: android webview

我有android webview应用程序,并在网络源中有分享新闻内容到whatsapp。它的工作原理完全来自移动浏览器,但它在网络视图中无法正常工作。

它的节目文字whatsapp:// send?text = Hello world

这是我的代码

File httpCacheDirectory = new File(getCacheDir(), "responses");
int cacheSize = 10*1024*1024;
Cache cache = new Cache(httpCacheDirectory, cacheSize);

OkHttpClient client = new OkHttpClient.Builder()
    .addNetworkInterceptor(REWRITE_CACHE_CONTROL_INTERCEPTOR)
    .cache(cache)
    .build();

4 个答案:

答案 0 :(得分:4)

如果您从Android上的WebView单击带有自定义方案的链接,您现在需要在WebViewClient中实现处理程序。

要使其正常运行,您需要将WebViewClient.shouldOverrideUrlLoading的实施更新为以下内容:

@Override
public boolean shouldOverrideUrlLoading(WebView view,
                                        WebResourceRequest request) {
    Uri uri = request.getUrl();
    if (Objects.equals(uri.getScheme(), "whatsapp")) {
        try {
            Intent intent = Intent.parseUri(request.getUrl().toString(), Intent.URI_INTENT_SCHEME);
            if(intent.resolveActivity(getPackageManager()) != null)
                startActivity(intent);
            return true;
        } catch (URISyntaxException use) {
            Log.e(TAG, use.getMessage());
        }
    }
    return super.shouldOverrideUrlLoading(view, request);
}

答案 1 :(得分:3)

WebViewClient()方法中添加以下代码,它将完美运行

public boolean shouldOverrideUrlLoading(WebView view, String url) {
                if (url != null && url.startsWith("whatsapp://")) {
                    view.getContext().startActivity(
                            new Intent(Intent.ACTION_VIEW, Uri.parse(url)));
                    return true;
                } else {
                    return false;
                }
            }

答案 2 :(得分:2)

在html代码中,替换:

<a href="whatsapp://send?text=Hello">

使用:

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

请在此处查看Chrome的相关文档: https://developer.chrome.com/multidevice/android/intents#example

答案 3 :(得分:0)

别忘了从网址中删除+

this.webView.setWebViewClient(new WebViewClient(){
        @Override
        public boolean  shouldOverrideUrlLoading(WebView view, String url) {
            if (url != null && url.startsWith("https://wa.me")) {
                view.getContext().startActivity(
                        new Intent(Intent.ACTION_VIEW, Uri.parse(url.replace("+",""))));

                return true;

            } else {
                return false;
            }
        }
    });