У нас есть гибридное приложение, которое отображает содержимое приложения в веб-окне. Я пытаюсь переопределить 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 .