【问题标题】:Checking Android version when requesting runtime permission请求运行时权限时检查 Android 版本
【发布时间】: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版本有好处吗?

【问题讨论】:

    标签: android android-permissions runtime-permissions


    【解决方案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. 无论如何,这并不能回答问题,但感谢您提供的信息!
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2017-07-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-09-26
      • 2017-03-28
      • 1970-01-01
      相关资源
      最近更新 更多