Android: Используя html5 для определения геолокации в webview с API JavaScript

У меня в настоящее время есть проблема с геолокацией в webview. У меня есть веб-приложение. Я в настоящее время не использую phonegap или любую другую платформу для мобильных устройств. Я был неудачен при получении встроенной html5 геолокации API JavaScript для работы над приложением, которое работает в webview в приложении для Android. Сайт хорошо работает иначе из браузера Chrome на андроиде 2.0 + (поддерживаемая геолокация).

Я компилирую против версии 5 API андроида.

Я уже прочитал это сообщение

Решение Phonegap записи прокси, который переносит созданный в вызов и использует действие хоста вместо этого, хорошо, но я предпочел бы использовать встроенный для webview (WebKit), не используя телефонный разрыв.

Я установил верные полномочия в файле манифеста:







Вот отрывок примера кода:

webview = (WebView) findViewById(R.id.webview);
pbarDialog = new ProgressDialog(this);
pbarDialog.setCancelable(false);
pbarDialog.setProgressStyle(ProgressDialog.STYLE_SPINNER);
webview.setWebViewClient(new MyWebViewClient());
webview.getSettings().setJavaScriptEnabled(true);
webview.setWebChromeClient(new MyChromeWebViewClient());
webview.setVerticalScrollBarEnabled(false);
WebSettings webSettings = webview.getSettings();
webSettings.setSavePassword(true);
webSettings.setSaveFormData(true);
webSettings.setJavaScriptEnabled(true);
webSettings.setSupportZoom(false);
webSettings.setJavaScriptCanOpenWindowsAutomatically(true);
webSettings.setGeolocationEnabled(true);

...

private class MyChromeWebViewClient extends WebChromeClient {

@Override
public void onProgressChanged(WebView view, int progress) {
    // Activities and WebViews measure progress with different scales.
    // The progress meter will automatically disappear when we reach 100%
    activity.setProgress(progress * 100);
}

@Override
public boolean onJsAlert(WebView view, String url, String message, JsResult result) {
    Log.d(LOG_TAG, message);
    // This shows the dialog box.  This can be commented out for dev
    AlertDialog.Builder alertBldr = new AlertDialog.Builder(activity);
    alertBldr.setMessage(message);
    alertBldr.setTitle("Alert");
    alertBldr.show();
    result.confirm();
    return true;
  }

}

private class MyWebViewClient extends WebViewClient {

@Override
public boolean shouldOverrideUrlLoading(WebView view, String url) {
    view.loadUrl(url);
    return true;
}

@Override
public void onReceivedError(WebView view, int errorCode,
    String description, String failingUrl) {
    }
}

У кого-либо еще были проблемы с тем, чтобы заставлять веб-приложение работать в webview?

10
задан Community 23 May 2017 в 11:54
поделиться