无法在Android 11上的webview中获取地理位置
我怎么了?这段代码适用于Android 7..10,但不适用于Android 11。HTML提供了一个访问错误 Android清单:无法在Android 11上的webview中获取地理位置,android,webview,geolocation,Android,Webview,Geolocation,我怎么了?这段代码适用于Android 7..10,但不适用于Android 11。HTML提供了一个访问错误 Android清单: <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /> <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.READ_CALENDAR" />
<uses-permission android:name="android.permission.WRITE_CALENDAR" />
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION " />
<uses-permission android:name="android.permission.ACCESS_GPS" />
<uses-permission android:name="android.permission.ACCESS_ASSISTED_GPS" />
<uses-permission android:name="android.permission.INTERNET"/>
在HTML中:
navigator.geolocation.getCurrentPosition(
function(location) {
latitude=location.coords.latitude;
longitude=location.coords.longitude;
accuracy=location.coords.accuracy;
console.log("- WORK!")
},
function(error){
console.log("- NOT WORK!")
},{enableHighAccuracy: true,timeout: 2000,
maximumAge: 60000}
);
请仅对android 10及以上版本使用此权限
Manifest.permission.ACCESS_BACKGROUND_LOCATION
结果证明这是Javascript中的一个错误。在Android11的webview中,“navigator.geolocation.getCurrentPosition”方法不起作用。Android 7..11的通用解决方案如下:
function fetchLocation() {
if (navigator.geolocation) {
navigator.geolocation.getCurrentPosition(onGeoSuccess, onGeoError)
} else {
console.log("- without transmitting geolocation ((")
}
}
function onGeoSuccess(event){
latitude=event.coords.latitude;
longitude=event.coords.longitude;
accuracy=event.coords.accuracy; //точность
console.log("- you can shoot coordinates in the browser method #2")
geosupport=true;
}
function onGeoError(event){
console.log("- without transmitting geolocation ((")
}
console.log("--test method 1");
navigator.geolocation.getCurrentPosition(
function(location) {
latitude=location.coords.latitude;
longitude=location.coords.longitude;
accuracy=location.coords.accuracy; //точность
console.log("- you can shoot coordinates in the browser method #2")
},
function(error){
console.log("-test method 2");
fetchLocation();
},{enableHighAccuracy: true,timeout: 2000,
maximumAge: 60000}
);
错误是什么?
function fetchLocation() {
if (navigator.geolocation) {
navigator.geolocation.getCurrentPosition(onGeoSuccess, onGeoError)
} else {
console.log("- without transmitting geolocation ((")
}
}
function onGeoSuccess(event){
latitude=event.coords.latitude;
longitude=event.coords.longitude;
accuracy=event.coords.accuracy; //точность
console.log("- you can shoot coordinates in the browser method #2")
geosupport=true;
}
function onGeoError(event){
console.log("- without transmitting geolocation ((")
}
console.log("--test method 1");
navigator.geolocation.getCurrentPosition(
function(location) {
latitude=location.coords.latitude;
longitude=location.coords.longitude;
accuracy=location.coords.accuracy; //точность
console.log("- you can shoot coordinates in the browser method #2")
},
function(error){
console.log("-test method 2");
fetchLocation();
},{enableHighAccuracy: true,timeout: 2000,
maximumAge: 60000}
);