无法在Android 11上的webview中获取地理位置

无法在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" />

我怎么了?这段代码适用于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.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}
  );