Android 防止;不要再问了;从发射爱奥尼亚/科尔多瓦';暂停/恢复

Android 防止;不要再问了;从发射爱奥尼亚/科尔多瓦';暂停/恢复,android,cordova,cordova-plugins,Android,Cordova,Cordova Plugins,我正在使用和进行地理定位,这是为了满足Android 6+的权限需求 当权限弹出窗口打开时,Cordova按预期合理地触发“暂停”文档事件,表示视图已从应用程序转到弹出窗口(Cordova.js): 当用户点击“拒绝”或“允许”时,Cordova会触发一个“resume”文档事件,ionic的$ionicPlatform.on('resume',…)回调也会按预期运行 但是,在用户点击“永不再次询问”后,所有后续请求精细/粗略地理定位权限的调用都会失败,而不会显示权限弹出窗口,但仍会触发“暂停”

我正在使用和进行地理定位,这是为了满足Android 6+的权限需求

当权限弹出窗口打开时,Cordova按预期合理地触发“暂停”文档事件,表示视图已从应用程序转到弹出窗口(Cordova.js):

当用户点击“拒绝”或“允许”时,Cordova会触发一个“resume”文档事件,ionic的
$ionicPlatform.on('resume',…)
回调也会按预期运行

但是,在用户点击“永不再次询问”后,所有后续请求精细/粗略地理定位权限的调用都会失败,而不会显示权限弹出窗口,但仍会触发“暂停”/“恢复”文档事件,这将导致


插件有一个检查。如果用户已经请求应用程序不再请求权限,我可以做些什么来防止暂停/恢复被JS触发?

我相信你已经解决了这个问题,但我相信唯一的方法是检测拒绝权限被按下的时间。事实上,检查总是完成的(即使用户之前说过永不再进行检查)

基本上,如果它在短于人类可能(或可能)的时间内被按下,您将知道它是由系统自动调用的,因为它仍然需要每次执行检查。因此,您基本上可以区分是立即按下Deny键,还是用户手动按下Deny键(这需要几毫秒的时间)


希望能有所帮助?

经检查,解决方案是不要在$resume回调中执行任何获得地理位置权限的操作。

是的,我解决了这个问题,只是发现自己是个白痴。将张贴明显的完整性。
case 'pause':
// Volume events
case 'volumedownbutton':
case 'volumeupbutton':
    cordova.fireDocumentEvent(action);  // action being "pause"

case 'resume':
    ....