gpt4 book ai didi

android - Cordova位置权限每次都会触发onResume

转载 作者:行者123 更新时间:2023-11-29 19:15:05 25 4
gpt4 key购买 nike

我有带有 map 的 cordova 应用程序。当用户进入 map 状态时,它会询问位置权限。许多用户不想给那里位置,所以他们拒绝位置权限,如果权限窗口第二次出现,它有一个复选框来防止显示它。所以现在的问题是,如果用户按下不再显示并拒绝,权限总是在后台询问并拒绝它也会触发 onPause onResume 事件。在我的 onResume 事件中,我有很多检查不应在每次权限触发 onResume 时触发。

如何在许可时停止 onResume 触发器,或者我是否可以在有许可触发器时进行一些检查然后我不触发 onResume?

最佳答案

Android 运行时权限对话框通过创建和切换到新 Activity 来显示。发生这种情况时,Cordova Activity (即您的应用程序)将置于后台(触发 onPause 事件)。当用户做出选择时,权限 Activity 将被销毁,您的应用 Activity 将恢复到前台(触发 onResume 事件)。

所以你不能阻止 onResume 事件被触发,因为它在前台 Activity 发生变化时被正确调用。

你能做的是更优雅地处理这种情况。一种方法是使用 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();

关于android - Cordova位置权限每次都会触发onResume,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43803132/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com