当请求运行时权限时,如何检查Android版本

4

最近我更新了一个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个回答

6

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或更高版本,则应该进行检查。否则,您可以按照自己的意愿操作。

所有这些都引发了我的问题,检查Android版本在这种情况下是否有好处?

据我所知,在上述内容中,仅验证本身是不必要的。因此,这个检查只是一个可有可无的if子句,会使您的代码混乱。


4
ContextCompact.checkSelfPermission

在 Android 版本 23 以下,PERMISSION_GRANTED 总是返回。这样您就可以避免检查版本号。更多信息请参见此处


我在您提供的链接中没有明确看到它写下来,如果您正在检查实际上没有的权限,即使在 Android 23 以下是无意义的,那将是一种奇怪的行为。无论如何,这并没有回答问题,但感谢您提供的信息! - M. Haché

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接