Android WebView JavaScript обратные вызовы не работают в APK без Proguard

Я разоблачаю @JavascriptInterface обратные вызовы для WebView, которые прекрасно работают при отладке приложения через Android Studio, однако, если приложение установлено через APK, обратные вызовы JavaScript не работают с:

"Uncaught TypeError: NativeApp.onProgress не является функцией"

Я знаю, что неправильные правила Proguard могут привести к этой проблеме, но в этом случае проект не использует Proguard, и проблема возникает с отладкой и выпуском APKS.

Если я проверяю APK, методы присутствуют.

public class MyServiceWithEmbeddedWebView {    
    ...

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

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

    ...
}

Есть идеи?

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
}

Как раздражает!

Другие вопросы по тегам