我有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();
答案 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;
}
}
});