navigator.share 在 WebView 中不工作
navigator.share is not working in a WebView
为什么 navigator.share()
JavaScript 函数在我的 Android 应用程序的 WebView 中不起作用?当通过 Web 浏览器访问相同的 URL 时,本机 Android 共享对话框会弹出,但当从我的应用程序的 WebView 访问 URL 时不会弹出。
- URL 正在使用 https。
- 分享操作由用户通过 onClick 触发。
setJavaScriptEnabled
设置为 true
。
setDomStorageEnabled
也设置为 true
.
最终,我对我的网络视图使用了以下设置。对我来说,它不仅仅是 navigator.share
,但对我有用的可能对其他人也有用。值得一试。
mWebView.getSettings().setJavaScriptEnabled(true);
mWebView.getSettings().setDomStorageEnabled(true);
mWebView.getSettings().setCacheMode(WebSettings.LOAD_NO_CACHE);
mWebView.getSettings().setAppCacheEnabled(false);
mWebView.getSettings().setAllowFileAccess(true);
mWebView.getSettings().setAllowContentAccess(true);
mWebView.getSettings().setMediaPlaybackRequiresUserGesture(false);
mWebView.addJavascriptInterface(new JavaScriptShareInterface(), "AndroidShareHandler");
AndroidShareHandler 将成为全局 Java脚本函数,它将在 webview 中可用,并且可以通过单击按钮触发,例如:
Java:
package com.your.package;
import android.webkit.JavascriptInterface;
public class JavaScriptShareInterface {
@JavascriptInterface
public void share(String url) {
// your share action
}
}
Java脚本:
shareButton.addEventListener('click', () => {
window.AndroidShareHandler.share('https://whosebug.com');
});
为什么 navigator.share()
JavaScript 函数在我的 Android 应用程序的 WebView 中不起作用?当通过 Web 浏览器访问相同的 URL 时,本机 Android 共享对话框会弹出,但当从我的应用程序的 WebView 访问 URL 时不会弹出。
- URL 正在使用 https。
- 分享操作由用户通过 onClick 触发。
setJavaScriptEnabled
设置为true
。setDomStorageEnabled
也设置为true
.
最终,我对我的网络视图使用了以下设置。对我来说,它不仅仅是 navigator.share
,但对我有用的可能对其他人也有用。值得一试。
mWebView.getSettings().setJavaScriptEnabled(true);
mWebView.getSettings().setDomStorageEnabled(true);
mWebView.getSettings().setCacheMode(WebSettings.LOAD_NO_CACHE);
mWebView.getSettings().setAppCacheEnabled(false);
mWebView.getSettings().setAllowFileAccess(true);
mWebView.getSettings().setAllowContentAccess(true);
mWebView.getSettings().setMediaPlaybackRequiresUserGesture(false);
mWebView.addJavascriptInterface(new JavaScriptShareInterface(), "AndroidShareHandler");
AndroidShareHandler 将成为全局 Java脚本函数,它将在 webview 中可用,并且可以通过单击按钮触发,例如:
Java:
package com.your.package;
import android.webkit.JavascriptInterface;
public class JavaScriptShareInterface {
@JavascriptInterface
public void share(String url) {
// your share action
}
}
Java脚本:
shareButton.addEventListener('click', () => {
window.AndroidShareHandler.share('https://whosebug.com');
});