gpt4 book ai didi

android - 请求权限 : How to wait until granted?

转载 作者:行者123 更新时间:2023-12-04 00:29:52 27 4
gpt4 key购买 nike

Android API 23 及更高版本要求在运行时确认“危险”权限。根据其他 StackOverflow 建议,我使用 checkSelfPermissions() 检查所需的权限,如果需要,调用 requestPermissions()。这很好用,但是请求是异步处理的,即 requestPermissions() 立即返回。问题是我的应用程序在 requestPermissions() 之后继续运行。稍后,出现权限确认对话框,但到那时,我的应用程序尝试了失败的 API 调用。

我想我需要等到所有权限都被授予后才能继续我的应用程序。我想我可以实现一些轮询 kluge 来做到这一点,但这对我来说太粗糙了。 解决这个问题的“最佳实践”是什么? 文档中的各种最佳实践描述并未解决此问题。

最佳答案

将您的逻辑放在它自己的函数中,在 onCreate() 之外.

private void doStuff() {
//whatever
}
如果授予权限,只需直接从 onCreate() 调用该函数即可。 :
@Override
public void onCreate(Bundle savedInstanceState) {
//...
if (checkSelfPermissions(/*whatever*/) {
doStuff();
} else {
requestPermissions(/*whatever*/);
}

//nothing dependent on runtime permissions after this point
}
然后覆盖 onRequestPermissionsResult() :
@Override
public void onRequestPermissionsResult(int requestCode, String[] permissions, int[] grantResults) {
if (requestCode == /*whatever you set in requestPermissions()*/) {
if (!Arrays.asList(grantResults).contains(PackageManager.PERMISSION_DENIED)) {
//all permissions have been granted
doStuff(); //call your dependent logic
}
}
}

关于android - 请求权限 : How to wait until granted?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52997092/

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