- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
目前我有以下方法来检查 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/
我有一个模型,其中一位设置者期望得到 Color Resource但在未解析资源的情况下无法直接使用该资源(通过使用 ContextCompat )。 有没有办法可以注释我的方法来指示/限制这一点?
代码: backgroundColor = typedArray.getColor(R.styleable.TapBarMenu_tbm_backgroundColor, ContextCompat.
我根据另一篇文章在 setOnClickListener 中使用它 here 像这样: start.setOnClickListener(new View.OnClickListener() {
我目前正在使用 ContextCompat.getColor,但它没有获取正确的颜色。当应用程序遵守夜间资源限定符时,ContextCompat 从 values/colors.xml 而不是 val
当我为 SlidingTabLayout 对象设置颜色时出现错误。这是我的 mainActivity,首先我发现 getResource.getColor 已被弃用。所以我使用了 contextCom
目前我有以下方法来检查 Marshmallow 的 AppCompatActivity 中的运行时权限: if(Build.VERSION.SDK_INT > Build.VERSION_CODES.
我正在尝试用 ContextCompat.GetColor 替换 Resources.GetColor,但最后一个不返回颜色,我不知道我应该使用什么来代替 Resources.GetColor(从 A
我想知道什么时候在应用程序中使用 ContextCompact 类。基本上它的用途是什么以及何时使用它?我读过开发者网站,它说 ContextCompact 是“访问 Context 中的功能的助手”
我正在为我的 Android 应用开发夜间模式。我正在使用 ContextCompat.getColor 以编程方式为某些 UI 元素获取颜色,但是这种方法无法获取正确的颜色。当应用程序处于夜间模式时
我正在尝试使运行时权限向后兼容旧设备,但使用支持库我无法在 ContextCompat 类中找到 checkSelfPermission() 静态调用,但其记录为 here 这是我的项目 gradle
在我的 android 应用程序(minSdkVersion 15)中,我必须创建目录并将文件写入其中。在我的 AppManifest 中,我正在使用: 在创建目录或文件之前,我正在检查是否允许或
TL,博士; ContextCompat.getColor()不使用夜间颜色(values-night/colors.xml),但在启用夜间模式时应该使用。 这是问题: 大家好, 所以我正在为我的 A
我正在使用 Google Vision OCR 从名片(OCR 图形 Activity )中获取电子邮件,并将其发送到 SendEmail Activity 中的“收件人”目的地。我的日志显示已检测到
这是一段代码,用于请求访问设备中精确位置的权限。 if(ContextCompat.checkSelfPermission(this, Manifest.permission.ACCESS_FINE_
一切正常,但在 Android Studio 中显示以下错误 代码运行但无法获得函数、类等的建议 谢谢 最佳答案 我遇到了与您完全相同的问题...升级到 3.1.2/3 并变得一团糟。 尝试以下方法从
更新 Android Studio 后,我发现我的项目中有一些红色行。 我有什么。 我调用这个方法: if (Build.VERSION.SDK_INT < 21) { orangeProgr
在 Android M 中,我看到 getColor(int id) 被替换为 ContextCompat.getColor(Context context, int id)。 我刚开始接触 Andr
嗨,我在 Eclipse 中有一个旧项目,当我尝试像这样检查SelfPermission时: ContextCompat.checkSelfPermission(this, Manifest.per
ContextCompat.getExternalFilesDirs(context, null)说: Returns absolute paths to application-specific d
我正在尝试检查 Android Marshmallow 中用户授予/撤销的权限。不幸的是,ContextCompat.checkSelfPermission()(它是 Context.checkCal
我是一名优秀的程序员,十分优秀!