Форум для тех, кто программирует под Android
Anonymous
WebView Emulator Android не видит изменения геолокации, пока я не открываю ту же страницу в Chrome
Сообщение
Anonymous » 01 июл 2025, 23:02
У меня есть приложение для Android Barebones с веб -просмотром, которое загружает веб -страницу, которая хочет использовать геолокацию. Веб -страница получает геолокацию, но застряла. Возьмите новое место. Он продолжает получать старое место. Я бы предпочел не тратить время на выполнение дополнительных шагов все время.
Код: Выделить всё
< /code>
webview создан так: < /p>
WebView(context).apply {
settings.setJavaScriptEnabled(true)
settings.setGeolocationEnabled(true)
setWebChromeClient(object : WebChromeClient() {
override fun onGeolocationPermissionsShowPrompt(origin : String, callback : GeolocationPermissions.Callback) {
callback.invoke(origin, true, false);
}
})
webViewClient = WebViewClient()
loadUrl("https://mywebsite.example.com")
}
< /code>
разрешения, запрошенные с помощью: < /p>
private val requestPermissionLauncher =
registerForActivityResult(
ActivityResultContracts.RequestPermission()
) { isGranted: Boolean ->
if (!isGranted) {
Toast.makeText(this,"Location permission not granted",Toast.LENGTH_LONG).show()
}
}
//...
when (PackageManager.PERMISSION_GRANTED) {
ContextCompat.checkSelfPermission(this, Manifest.permission.ACCESS_FINE_LOCATION) -> {
}
else -> {
requestPermissionLauncher.launch(Manifest.permission.ACCESS_FINE_LOCATION)
}
}
< /code>
js на веб-сайте: < /p>
function getLocation() {
navigator.geolocation.getCurrentPosition(showPosition, showError, {
enableHighAccuracy: true,
timeout: 5000,
maximumAge: 0
});
}
function showPosition(position) {
someElement.innerHTML="Latitude: " + position.coords.latitude +
"
Longitude: " + position.coords.longitude;
}
function showError(error) {
// ...
}
У меня также есть кнопка HTML для вызова getLocation по требованию. />
https://gitlab.com/nucleware/toy-box/an ... _type=tags #
написано />
https://uplink-geolocation.w3spaces.com/
Подробнее здесь:
https://stackoverflow.com/questions/795 ... n-the-same
1751400169
Anonymous
У меня есть приложение для Android Barebones с веб -просмотром, которое загружает веб -страницу, которая хочет использовать геолокацию. Веб -страница получает геолокацию, но застряла. Возьмите новое место. Он продолжает получать старое место. Я бы предпочел не тратить время на выполнение дополнительных шагов все время.[code] < /code> webview создан так: < /p> WebView(context).apply { settings.setJavaScriptEnabled(true) settings.setGeolocationEnabled(true) setWebChromeClient(object : WebChromeClient() { override fun onGeolocationPermissionsShowPrompt(origin : String, callback : GeolocationPermissions.Callback) { callback.invoke(origin, true, false); } }) webViewClient = WebViewClient() loadUrl("https://mywebsite.example.com") } < /code> разрешения, запрошенные с помощью: < /p> private val requestPermissionLauncher = registerForActivityResult( ActivityResultContracts.RequestPermission() ) { isGranted: Boolean -> if (!isGranted) { Toast.makeText(this,"Location permission not granted",Toast.LENGTH_LONG).show() } } //... when (PackageManager.PERMISSION_GRANTED) { ContextCompat.checkSelfPermission(this, Manifest.permission.ACCESS_FINE_LOCATION) -> { } else -> { requestPermissionLauncher.launch(Manifest.permission.ACCESS_FINE_LOCATION) } } < /code> js на веб-сайте: < /p> function getLocation() { navigator.geolocation.getCurrentPosition(showPosition, showError, { enableHighAccuracy: true, timeout: 5000, maximumAge: 0 }); } function showPosition(position) { someElement.innerHTML="Latitude: " + position.coords.latitude + " Longitude: " + position.coords.longitude; } function showError(error) { // ... } [/code] У меня также есть кнопка HTML для вызова getLocation по требованию. />https://gitlab.com/nucleware/toy-box/android-webview-geolocator/-/tree/stack-overflow-question?ref_type=tags# написано />https://uplink-geolocation.w3spaces.com/ Подробнее здесь: [url]https://stackoverflow.com/questions/79594576/android-emulator-webview-does-not-see-changed-geolocation-until-i-open-the-same[/url]