【问题标题】:navigator.share is not working in a WebViewnavigator.share 在 WebView 中不起作用
【发布时间】:2019-03-14 08:39:13
【问题描述】:

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

  • URL 使用 https。
  • 分享操作由用户通过点击触发。
  • setJavaScriptEnabled 设置为 true
  • setDomStorageEnabled 也设置为 true

【问题讨论】:

  • 我的猜测是 window.print 在网络视图中不起作用的原因是一样的——不管是什么
  • 任何解决方案了吗?

标签: android android-webview navigator


【解决方案1】:

最终,我为我的 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 中可用,并且可以通过单击按钮触发,例如:

Java:

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');
});

【讨论】:

  • 我已经使用了上述设置。但是 JavaScriptShareInterface 是从哪里来的呢?我找不到这样的课。你能帮忙或发布完整的代码吗?
  • @MilindMevada 我已经更新了我的答案。接口函数将在 JavaScript 中可用。
  • 能否请您添加每个路径文件,需要编辑哪些java和javascript文件以及mWebView是什么?
猜你喜欢
  • 2021-01-13
  • 1970-01-01
  • 2012-05-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-06-15
  • 2011-11-24
  • 1970-01-01
相关资源
最近更新 更多