请求运行时权限时检查 Android 版本
Posted
技术标签:
【中文标题】请求运行时权限时检查 Android 版本【英文标题】:Checking Android version when requesting runtime permission 【发布时间】:2017-09-24 03:27:55 【问题描述】:我最近更新了 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版本有好处吗?
【问题讨论】:
【参考方案1】:但我应该努力添加这个吗?
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) if(checkPermissions()) doThings(); else requestPermissions(); else doThings();
如果 checkPermissions()
和 requestPermissions()
严格调用 API 23 或更高版本的类或方法,您应该这样做。否则,您可以随心所欲。
这让我想问,在这种情况下检查Android版本有好处吗?
据我所知,鉴于我上面所说的,验证本身是不必要的。所以这个检查只是一个消耗性的if
子句,会弄乱你的代码。
【讨论】:
【参考方案2】:ContextCompact.checkSelfPermission
在 android 版本 PERMISSION_GRANTED。 所以你可以避免检查构建版本。 更多信息here
【讨论】:
我没有在您提供的链接中看到它明确写出,如果您正在检查您实际上没有的权限,这将是一种奇怪的行为,即使它在 android 中没有意义低于23. 无论如何,这并不能回答问题,但感谢您提供的信息!以上是关于请求运行时权限时检查 Android 版本的主要内容,如果未能解决你的问题,请参考以下文章