Android运行时权限对话框通过创建并切换到新活动来显示。发生这种情况时,Cordova活动(即您的应用程序)将置于后台(触发onPause事件)。当用户做出选择时,权限活动被销毁,您的应用活动恢复到前台(触发onResume事件)。
因此,您无法阻止onResume事件被触发,因为它正在对前景活动的更改进行正确调用。
你可以做的是更好地处理这种情况。一种方法是使用requestLocationAuthorization()的cordova-plugin-diagnostic自己处理请求位置权限。
例如,通过设置一个标志之前请求许可和接收权限响应后即刻清除它,恢复的事件处理程序可以知道它是否正在因为权限要求的简历:
var permissionRequestInProgress = false;
document.addEventListener("resume", function(){
if(permissionRequestInProgress){
console.log("Resumed due to permissions request");
}else{
console.log("Resumed due to another reason");
}
}, false);
function requestLocationPermission(){
permissionRequestInProgress = true;
cordova.plugins.diagnostic.requestLocationAuthorization(function(status){
console.log("Permission is " + status);
setTimeout(function(){
permissionRequestInProgress = false;
}, 100);
});
}
requestLocationPermission();