У меня очень, очень простой сценарий, и я сталкиваюсь с очень распространенной проблемой (замечаемой многими пользователями StackOverflow с течением времени).Однако я перепробовал каждое предложенное решение, и ни одно из них, похоже, не работает.Может кто-нибудь помочь решить этот вопрос раз и навсегда?
Я создаю приложение для Android (предположим, для Android 7), которое содержит веб-представление, которое указывает на веб-сайт, который реализует очень простую геолокацию.(Моя последняя, очень урезанная версия сайта просто отображает широту и долготу пользователя.)
Я могу нормально просматривать сайт (и он отлично отображает широту / логичность) в Chrome.Но когда я запускаю приложение с помощью Webview, ничего не отображается.
За последние несколько дней я пытался, казалось бы, каждое предлагаемое решение (в MainActivity.java) решить эту проблему, но ни одно из решений, похоже, не работает.
Я добавил все мыслимые разрешения в AndroidManifest.xml.
Что нужно сделать, чтобы заставить это работать?
Конечно, просмотр сайта с геолокацией вAndroid-приложение с Webview должно быть довольно простым, верно ???
Редактировать: Я немного сузил круг вопросов.Я запросил у пользователя разрешения во время выполнения и подтвердил, что геолокация разрешена.Я также подтвердил, что Javascript, в общем, разрешен моим приложением.
Кажется, что проблема с ключом / ядром заключается в следующем: не , по-видимому, работает в Webview.
navigator.geolocation.getCurrentPosition(success, error);
Я не знаю почему, но в этом проблема.
Ссылка:
Ошибка веб-просмотра Android при запросе геолокации
Приложение не имеет достаточных разрешений геолокации
Доступ к местоположению в Chrome, не работает в WebView
Android Запрос разрешения использования местоположения в веб-представлении
Минимальная геолокационная веб-страница: (Как настроить отображение в веб-обозревателе Android?)
<!DOCTYPE html>
<html>
<head>
<meta charset=utf-8 />
<title>Webview Test</title>
</head>
<body>
<div id='output'></div>
<script>
function success(pos) {
var latitude = pos.coords.latitude;
var longitude = pos.coords.longitude;
document.getElementById('output').innerHTML = `Your current position is: Latitude : ${latitude} Longitude: ${longitude}`;
}
function error(err) {
console.warn('ERROR(${err.code}): ${err.message}');
}
navigator.geolocation.getCurrentPosition(success, error);
</script>
</body>
</html>