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();