我制作了一个网站的网络视图。现在我想将我的网络视图中的一些数据共享到 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>
@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: 等。
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();
}
});
使用此代码解决了我的问题。
使用这个并且工作正常。 (@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;
}
});
你可以使用,它对我有用:
选项第一-
<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 版本
我尝试了一下,成功了:
<a href="intent://send?text=Hello#Intent;scheme=whatsapp;package=com.whatsapp;end" class="button">Go to Whatsapp/>
请参阅 Chrome 相关文档此处。
更新了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;
}
}
使用 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)
}