Android переопределение веб-просмотра JavaScript - PullRequest
0 голосов
/ 09 марта 2020

У нас есть гибридное приложение, которое отображает содержимое приложения в веб-окне. Я пытаюсь переопределить navigator.geolocation.getCurrentPosition, чтобы, если пользователь использует приложение, оно использовало собственную службу определения местоположения.

Вот моя текущая функция, вызываемая в методе onStart действия.

private void overrideBrowserLocationAPI() {

     WebView webView = fragment.getWebView();

    // Provide an interface to call from the web side
    class LocationInterface {
        @JavascriptInterface public void listen() { Log.d("[NATIVE]", "Location requested"); }
    }
    webView.addJavascriptInterface(new LocationInterface(), "NATIVE");

    // Override the browser's location API
    String script = "navigator.geolocation.getCurrentPosition = function(success, error, options) { NATIVE.listen(); };";
    webView.evaluateJavascript(script, null);
}

Проблема в том, что listen() никогда не вызывается, хотя я точно знаю, что веб-приложение вызывает getCurrentPosition().

Если я добавлю NATIVE.listen() в Интернете приложение, оно работает, это просто переопределение, которое не действует.

Пример Android 6 на Nexus 5 .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...