请求运行时权限时检查Android版本

时间:2017-04-26 15:52:49

标签: android android-permissions runtime-permissions

我最近更新了Android应用的代码,以请求Android 6.0及更高版本的权限。 但是,我现在面临着如何检查权限的困境。

在检查权限之前,我看到有人在线查看操作系统版本,因为23之前的版本,由于在安装时授予权限,因此无需检查权限。

现在我的支票看起来像这样,

if(checkPermissions()){
    doThings();
} else {
    requestPermissions();
}

但是我应该努力添加这个吗?

if (Build.VERSION.SDK_INT >= 23) {
    if(checkPermissions()){
        doThings();
    } else {
        requestPermissions();
    }
} else {
    doThings();
}

根据我的理解,我没有看到将后者添加到代码中的重点,旧版本的android可能会遇到第一个示例代码。

这一切让我想问,在这种情况下检查Android版本有什么好处吗?

2 个答案:

答案 0 :(得分:5)

  

但是我应该努力添加这个吗?

if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
    if(checkPermissions()){
        doThings();
    } else {
        requestPermissions();
    }
} else {
    doThings();
}

如果checkPermissions()requestPermissions()严格按API 23或更高版本调用类或方法,则应该这样做。或者,你可以按照自己的意愿去做。

  

这一切让我想问,在这种情况下检查Android版本有什么好处吗?

据我所知,鉴于上述情况,验证本身并不是必要的。因此,此检查只是一个耗尽if条款的代码。

答案 1 :(得分:4)

ContextCompact.checkSelfPermission

在Android版本中返回PERMISSION_GRANTED< 23。 所以你可以避免检查构建版本。 更多信息here