cordova 如果地理定位权限被拒绝,请再次请求

r55awzrz  于 2023-03-13  发布在  其他
关注(0)|答案(3)|浏览(241)

我正在通过phonegap开发一个应用程序,里面有一个地理定位按钮。
如果用户第一次拒绝地理定位权限,当他们再次单击地理定位按钮时,我如何再次请求权限?
目前我的代码结构是:

function getLocation() {    
    if(navigator.geolocation) {
        navigator.geolocation.getCurrentPosition(showPosition, positionError);

    } else {
        hideLoadingDiv()
        showError('Geolocation is not supported by this device')
    }
}

function positionError() {
    hideLoadingDiv()
    showError('Geolocation is not enabled. Please enable to use this feature')
}
qgelzfjb

qgelzfjb1#

你不能。
你唯一能做的就是在他的浏览器设置(https://support.google.com/chrome/answer/142065?hl=en)中显示重新激活位置共享的说明。

czfnxgou

czfnxgou2#

有两种方法:
1.如果您的Chrome版本大于83.0.4103.97,请在URL中使用锁图标

1.对于旧版本的Chrome浏览器,以下代码可以正常工作:
下面的代码只适用于Chrome浏览器。
步骤:
1.打开Chrome
1.打开控制台
1.在控制台中复制

var allowGeoRecall = true;
       var countLocationAttempts = 0;

1.在控制台中复制功能

function getLocation() {   
        console.log('getLocation was called') 
        if(navigator.geolocation) {
            navigator.geolocation.getCurrentPosition(showPosition, 
            positionError);
        } else {
            hideLoadingDiv()
            console.log('Geolocation is not supported by this device')
        }
    }

    function positionError() {    
        console.log('Geolocation is not enabled. Please enable to use this feature')
            
         if(allowGeoRecall && countLocationAttempts < 5) {
             countLocationAttempts += 1;
             getLocation();
         }
     }

    function showPosition(){
        console.log('posititon accepted')
        allowGeoRecall = false;
    }

1.在控制台中运行函数

getLocation();

运行此操作后,系统将要求您允许共享您的位置。如果您的回答是否定的,系统将再次询问您,直到您同意。
提示:如果用户的React是否定的,告诉他为什么你需要坐标。让他明白这一步对网络应用的良好运行至关重要。

bpsygsoo

bpsygsoo3#

这可以在页面信息中重置,可通过单击URL旁边的锁图标并允许"位置“访问页面信息

相关问题