Don*_*nic 3 android android-permissions
Android API 23 及更高版本要求在运行时确认“危险”权限。根据其他 StackOverflow 建议,我使用 checkSelfPermissions() 检查所需的权限,如果需要,调用 requestPermissions()。这工作正常,但请求是异步处理的,即 requestPermissions() 立即返回。问题是我的应用程序在 requestPermissions() 之后继续运行。稍后,权限确认对话框出现,但到那时,我的应用程序尝试了失败的 API 调用。
我假设我需要等到所有权限都被授予才能继续我的应用程序。我想我可以实现一些民意调查来做到这一点,但这对我来说太粗糙了。解决这个问题的“最佳实践”是什么?文档中的各种最佳实践描述都没有解决这个问题。
将您的逻辑放在它自己的函数中,在onCreate().
private void doStuff() {
//whatever
}
Run Code Online (Sandbox Code Playgroud)
如果授予权限,只需直接从onCreate()以下调用该函数:
@Override
public void onCreate(Bundle savedInstanceState) {
//...
if (checkSelfPermissions(/*whatever*/) {
doStuff();
} else {
requestPermissions(/*whatever*/);
}
//nothing dependent on runtime permissions after this point
}
Run Code Online (Sandbox Code Playgroud)
然后覆盖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
}
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
4111 次 |
| 最近记录: |