ContextCompat.checkSelfPermission 的用例是什么?

2024-04-04

目前我有以下方法来检查运行时权限AppCompatActivity对于棉花糖:

if(Build.VERSION.SDK_INT > Build.VERSION_CODES.LOLLIPOP_MR1) {
    boolean hasPermission = checkSelfPermission(Manifest.permission.XX)
                == PackageManager.PERMISSION_GRANTED;
    if(!hasPermission) {
        if(shouldShowRequestPermissionRationale(Manifest.permission.XX)) {
            // explain reason for permission, try again

        } else {
            // user deny with "don't show again"
        }
    }
}

到目前为止,我发现它对棉花糖来说效果相当好。但是,我是否应该担心我应该使用的 pre-M 版本中的权限ContextCompat.checkSelfPermission() http://developer.android.com/reference/android/support/v4/content/ContextCompat.html#checkSelfPermission(android.content.Context,%20java.lang.String)反而?我知道 pre-M 中的权限可以通过使用 Xposed 或类似框架进行修改,这是否意味着ContextCompat.checkSelfPermission()是否也能够充分检测由于 Xpose 等原因导致的权限拒绝?


根据权限拦截器的实现(例如通过 Xposed),要么为应用程序提供虚假数据,要么应用程序的进程将被撤销权限。

您将无法检测应用程序是否获取虚假数据,但在这种情况下您的应用程序至少不会崩溃。

如果在进程级别撤销权限,则ContextCompat.checkSelfPermission()即使在 pre-M 和返回时也能够检测到它PERMISSION_DENIED。请注意,如果您使用ContextCompat方法你还必须使用ActivityCompat.shouldShowRequestPermissionRationale() and ActivityCompat.requestPermissions()方法或它们的FragmentCompat版本。

请参阅此处了解更多详细信息:支持处理权限的库方法 https://developer.android.com/preview/features/runtime-permissions.html#support-lib.

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

ContextCompat.checkSelfPermission 的用例是什么? 的相关文章

随机推荐