gpt4 book ai didi

android - ContextCompat.checkSelfPermission 的用例是什么?

转载 作者:塔克拉玛干 更新时间:2023-11-02 23:02:46 25 4
gpt4 key购买 nike

目前我有以下方法来检查 Marshmallow 的 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"
}
}
}

到目前为止,我发现它对 Marshmallow 的效果相当好。但是,我是否应该担心我应该使用的 M 之前版本的权限 ContextCompat.checkSelfPermission()反而?我知道可以使用 Xposed 或类似框架修改 pre-M 中的权限,这是否意味着 ContextCompat.checkSelfPermission() 也能够充分检测到由于 Xposed 等原因导致的权限拒绝?

最佳答案

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

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

如果权限在进程级别被撤销,那么 ContextCompat.checkSelfPermission() 甚至可以在 pre-M 上检测到它并返回 PERMISSION_DENIED。请注意,如果您使用 ContextCompat 方法,您还必须使用 ActivityCompat.shouldShowRequestPermissionRationale()ActivityCompat.requestPermissions() 方法或其 FragmentCompat 版本。

查看此处了解更多详情:Support library methods for handling permissions .

关于android - ContextCompat.checkSelfPermission 的用例是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32271400/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com