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

Checking Android version when requesting runtime permission

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

我在网上看到有人在检查权限之前检查OS版本,因为23之前的版本,权限不需要检查,因为它们是在安装时授予的。

现在我的支票是这样的,

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

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

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

根据我的理解,我不认为将后者添加到代码中有什么意义,旧版本的 android 可以 运行 到第一个示例代码中就好了。

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

ContextCompact.checkSelfPermission

return 在 android 版本 < 23 中总是 PERMISSION_GRANTED。 所以你可以避免检查构建版本。 更多信息 here

but should I take the effort to add this?

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

如果 checkPermissions() 并且 requestPermissions() 严格调用 类 或方法 API 23 或更高版本,您应该这样做。否则,你可以随心所欲。

All this brings me to ask, is there a benefit to checking Android version in this case?

据我所知,鉴于我上面所说的,验证本身是没有必要的。所以这个检查只是一个可消耗的 if 子句,使您的代码混乱。