在没有Proguard的APK中,Android WebView JavaScript回调失败

时间:2017-01-18 19:07:43

标签: android android-webview proguard

我为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) {
        ...
    }

    ...
}

有什么想法吗?

1 个答案:

答案 0 :(得分:0)

@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
}

多烦啊!