Android API 23 及更高版本要求在运行时确认“危险”权限。根据其他 StackOverflow 建议,我使用 checkSelfPermissions() 检查所需的权限,如果需要,则调用 requestPermissions()。这工作正常,但请求是异步处理的,即 requestPermissions() 立即返回。问题是我的应用程序在 requestPermissions() 之后继续正常运行。一段时间后,会出现权限确认对话框,但到那时,我的应用程序已尝试失败的 API 调用。
我认为我需要等到所有权限都被授予后才能继续我的应用程序。我想我可以实施一些民意调查来做到这一点,但这对我来说太粗糙了。解决这个问题的“最佳实践”是什么?文档中的各种最佳实践描述并未解决此问题。
将你的逻辑放在它自己的函数中,在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
}
}
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)