Я пишу приложение, которое получает местоположение пользователя и отправляет его на сервер. Я использую JavaScript и PHP на стороне сервера. Я пытаюсь загрузить это приложение на Android WebView, и оно не отправляет местоположение в JavaScript, чтобы оно могло быть отправлено на сервер через ajax, но когда я запускаю его на своем мобильном устройстве с помощью Chrome, оно работает правильно. Пожалуйста, мне нужно знать, что я делаю неправильно. Мой код Android вставлен ниже
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
myWebview = (WebView) findViewById(R.id.webview);
WebSettings websettings = myWebview.getSettings();
myWebview.setWebViewClient(new WebViewClient());
websettings.setJavaScriptEnabled(true);
websettings.setJavaScriptCanOpenWindowsAutomatically(true);
websettings.setGeolocationDatabasePath( getFilesDir().getPath() );
myWebview.setWebChromeClient(new WebChromeClient() {
public void onGeolocationPermissionsShowPrompt(String origin,
GeolocationPermissions.Callback callback) {
callback.invoke(origin, true, false);
}
});
websettings.setAppCacheEnabled(true);
websettings.setDatabaseEnabled(true);
websettings.setDomStorageEnabled(true);
myWebview.loadUrl("https://example.com/proj/");
}
Я уже получил необходимое разрешение в файле манифеста Android.
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
Код ниже - это мой JavaScript, который обрабатывает местоположение
function getLocation() {
if (navigator.geolocation) {
navigator.geolocation.getCurrentPosition(reportLocation, showError);
} else {
$$('locationFeedbackText').innerHTML = "Geolocation is not supported by this Devide.";
}
}
function showError(error) {
switch(error.code) {
case error.PERMISSION_DENIED:
$$('locationFeedbackText').innerHTML = "User denied the request for Geolocation.";
break;
case error.POSITION_UNAVAILABLE:
$$('locationFeedbackText').innerHTML = "Location information is unavailable.";
break;
case error.TIMEOUT:
$$('locationFeedbackText').innerHTML = "The request to get user location timed out.";
break;
case error.UNKNOWN_ERROR:
$$('locationFeedbackText').innerHTML = "An unknown error occurred.";
break;
}
}
Когда я нажимаю кнопку в пользовательском интерфейсе, предполагается, что местоположение пользователя отправляется на сервер, и отображается сообщение об успешном завершении, но выводимое сообщение является сообщением из функции showError «Местоположение недоступноИмейте в виду, что это приложение работает должным образом, когда оно загружено с Chrome на моем мобильном устройстве.