首页 > 解决方案 > navigator.share 在 WebView 中不起作用

问题描述

navigator.share()JavaScript 函数在我的 Android 应用程序的 WebView 中不起作用是否有原因?通过网络浏览器访问相同的 URL 时,会弹出原生 Android 共享对话框,但从我的应用程序的 WebView 访问 URL 时不会。

标签: androidandroid-webviewnavigator

解决方案


最终,我为我的 webviews 使用了以下设置。对我来说,不仅仅是 . 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 将成为一个全局 JavaScript 函数,该函数将在 webview 中可用,并且可以通过单击按钮来触发,例如:

爪哇:

package com.your.package;

import android.webkit.JavascriptInterface;

public class JavaScriptShareInterface {
    @JavascriptInterface
    public void share(String url) {
        // your share action
    }
}

JavaScript:

shareButton.addEventListener('click', () => {
    window.AndroidShareHandler.share('https://stackoverflow.com');
});

推荐阅读