分享按钮在我的应用中不起作用
Share button not working in my app
我在android工作室[=30=中使用webview创建了一个简单网站应用程序 ] 并给予它 互联网访问权限 还在应用
上 启用 java 脚本
当我使用此代码添加 WhatsApp 分享按钮时
<button>
<a href="whatsapp://send?text=HERE GOES THE URL ENCODED TEXT YOU WANT TO SHARE" data-action="share/whatsapp/share">Share via Whatsapp</a>
</button>
这在所有移动浏览器中都运行良好,但是当我尝试在我的应用程序上使用它时,我收到一个错误屏幕,上面写着
Web page not available
The web page
at whatsapp://send?text=I'm%20interested%20in%20your%20car%20for%20salecould
not be loaded because:
net::ERR_UNKNOWN_URL_SCHEME
这是我在 mainactivity.java
中的代码
package com.a4extras.ukzz.whatsappdaily;
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.webkit.WebSettings;
import android.webkit.WebView;
import android.webkit.WebViewClient;
public class MainActivity extends AppCompatActivity {
private WebView mywebView;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
mywebView = (WebView)findViewById(R.id.WebView);
WebSettings webSettings = mywebView.getSettings();
webSettings.setJavaScriptEnabled(true);
mywebView.loadUrl("http://ukzz4u.blogspot.com/2017/11/whatsapp-share-01.html");
mywebView.setWebViewClient(new WebViewClient());
}
@Override
public void onBackPressed() {
if (mywebView.canGoBack()) {
mywebView.goBack();
} else {
super.onBackPressed();
}
}}
这是因为我的应用程序将 whatsapp:// 作为 URL
那么如何防止这种情况,以便共享按钮正常工作
请帮我写必要的脚本
谢谢
简单的解决方法是在 href
:
中使用 javascript
<a href="javascript:go('whatsapp://send?text=HERE')">Share</a>
或者,如果使用基于 Chrome 的网络视图:
<a href="intent://send?text=HERE#Intent;scheme=whatsapp;package=com.whatsapp;end">Share</a>
更复杂,但更强大的解决方案是自己控制whatsapp方案:
在您的 WebViewClient 中:
@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 e) {
e.printStackTrace();
}
}
return super.shouldOverrideUrlLoading(view, request);
}
我在android工作室[=30=中使用webview创建了一个简单网站应用程序 ] 并给予它 互联网访问权限 还在应用
上 启用 java 脚本当我使用此代码添加 WhatsApp 分享按钮时
<button>
<a href="whatsapp://send?text=HERE GOES THE URL ENCODED TEXT YOU WANT TO SHARE" data-action="share/whatsapp/share">Share via Whatsapp</a>
</button>
这在所有移动浏览器中都运行良好,但是当我尝试在我的应用程序上使用它时,我收到一个错误屏幕,上面写着
Web page not available
The web page at whatsapp://send?text=I'm%20interested%20in%20your%20car%20for%20salecould not be loaded because:
net::ERR_UNKNOWN_URL_SCHEME
这是我在 mainactivity.java
中的代码package com.a4extras.ukzz.whatsappdaily;
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.webkit.WebSettings;
import android.webkit.WebView;
import android.webkit.WebViewClient;
public class MainActivity extends AppCompatActivity {
private WebView mywebView;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
mywebView = (WebView)findViewById(R.id.WebView);
WebSettings webSettings = mywebView.getSettings();
webSettings.setJavaScriptEnabled(true);
mywebView.loadUrl("http://ukzz4u.blogspot.com/2017/11/whatsapp-share-01.html");
mywebView.setWebViewClient(new WebViewClient());
}
@Override
public void onBackPressed() {
if (mywebView.canGoBack()) {
mywebView.goBack();
} else {
super.onBackPressed();
}
}}
这是因为我的应用程序将 whatsapp:// 作为 URL 那么如何防止这种情况,以便共享按钮正常工作
请帮我写必要的脚本 谢谢
简单的解决方法是在 href
:
<a href="javascript:go('whatsapp://send?text=HERE')">Share</a>
或者,如果使用基于 Chrome 的网络视图:
<a href="intent://send?text=HERE#Intent;scheme=whatsapp;package=com.whatsapp;end">Share</a>
更复杂,但更强大的解决方案是自己控制whatsapp方案:
在您的 WebViewClient 中:
@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 e) {
e.printStackTrace();
}
}
return super.shouldOverrideUrlLoading(view, request);
}