Muszę pobrać lokalizację użytkownika w WebView
. Robię to za pomocą następującego JavaScript:
function getLocation() {
navigator.geolocation.getCurrentPosition(displayLocation, handleError);
}
Ale wyskakujące okienko z prośbą o pozwolenie nigdy się nie otwiera.
Ustawiłem te ustawienia:
ws.setJavaScriptEnabled(true);
ws.setGeolocationEnabled(true);
ws.setJavaScriptCanOpenWindowsAutomatically(true);
Jaki jest prawidłowy sposób uzyskania dostępu do lokalizacji użytkownika z poziomu WebView
?
źródło
android.webkit.WebChromeClient()
a nie tylkoWebChromeClient()
iandroid.webkit.GeolocationPermissions.Callback
aby to działało.Czy deklarujesz to pozwolenie w swoim manifeście?
Konieczne może być również zadeklarowanie innych uprawnień dotyczących lokalizacji, takich jak te:
źródło
Okno dialogowe akceptacji lub odrzucenia lokalizacji użytkownika zostało zaprojektowane przez programistę: D. Jak powiedział Chris Cashwell, po prostu użyj takiego oddzwaniania:
W niektórych przypadkach HTML5 wymaga użycia pamięci, musisz włączyć niektóre właściwości, aby Webview miał pełny dostęp do normalnego działania.
źródło
Dzieląc się moją klasą aktywności roboczej, jest to kompletne rozwiązanie, które można wykazać
Mam nadzieję, że to oszczędza komuś czas
źródło
To jest przykład pokazania okna dialogowego z ostrzeżeniem, aby promować pozwolenie użytkownika na korzystanie z jego lokalizacji:
źródło
Niedawno spotkałem się z tego typu sytuacjami i wykonałem poniższe kroki, aby to osiągnąć:
Krok 1: Dodaj uprawnienia do
AndroidManifest.xml
plikuKrok 2: Utwórz działanie, które będzie zawierać znak
WebView
iProgressBar
(w moim przypadku)Krok 3: W swojej klasie aktywności dodaj poniższy kod i wprowadź zmiany zgodnie z potrzebami
źródło