【问题标题】:Android WebView JavaScript callbacks fail in APK without Proguard没有 Proguard 的 APK 中的 Android WebView JavaScript 回调失败
【发布时间】:2017-06-03 07:24:03
【问题描述】:

我正在为 WebView 公开 @JavascriptInterface 回调,这在通过 Android Studio 调试应用程序时工作得很好,但是如果应用程序是通过 APK 安装的,则 JavaScript 回调会失败:

“未捕获的 TypeError:NativeApp.onProgress 不是函数”

我知道不正确的 Proguard 规则可能会导致此问题,但在这种情况下,项目未使用 Proguard,并且在调试和发布 APKS 时会出现问题。

如果我检查 APK,方法是存在的。

public class MyServiceWithEmbeddedWebView {    
    ...

    public createWebview() {
    ...
    webView.addJavascriptInterface(this, "NativeApp");
    ...
    }

    @JavascriptInterface
    void onProgress(int loaded, int total) {
        ...
    }

    ...
}

有什么想法吗?

【问题讨论】:

    标签: android android-webview proguard


    【解决方案1】:

    @JavascriptInterface 方法的范围更改为public 解决了这个问题。

    所以这适用于 APK 安装:

    @JavascriptInterface
    public void onProgress(int loaded, int total) {
        // this is public
    }
    

    这不适用于 APK 安装,但在由 Android Studio 调试器部署时就像冠军一样工作:

    @JavascriptInterface
    void onProgress(int loaded, int total) {
        // this is NOT public
    }
    

    真烦人!

    【讨论】:

    • 自 3 小时以来,我一直被困在这个问题上。非常感谢兄弟
    猜你喜欢
    • 2011-09-10
    • 1970-01-01
    • 1970-01-01
    • 2018-05-10
    • 1970-01-01
    • 2017-06-13
    • 2018-05-12
    • 2018-09-13
    • 1970-01-01
    相关资源
    最近更新 更多