Neo*_*eoh 5 android android-permissions android-support-library android-6.0-marshmallow
目前我有以下方法来检查AppCompatActivityMarshmallow的运行时权限:
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"
}
}
}
Run Code Online (Sandbox Code Playgroud)
到目前为止,我发现它对棉花糖的效果相当好.但是,我应该担心前M版本中的权限,我应该使用ContextCompat.checkSelfPermission()吗?我知道使用Xposed或类似的框架可以修改pre-M中的权限,这是否意味着ContextCompat.checkSelfPermission()能够充分检测由于Xposed等而导致的权限拒绝?
根据权限拦截器的实现(例如通过 Xposed),应用程序可能会被提供虚假数据,或者应用程序的进程将被撤销权限。
您将无法检测应用程序是否获取虚假数据,但在这种情况下您的应用程序至少不会崩溃。
如果在进程级别撤销权限,则ContextCompat.checkSelfPermission()即使在 pre-M 上也能够检测到它并返回PERMISSION_DENIED。请注意,如果您使用该ContextCompat方法,您还必须使用ActivityCompat.shouldShowRequestPermissionRationale()和ActivityCompat.requestPermissions()方法或其FragmentCompat版本。
有关更多详细信息,请参阅此处:用于处理权限的支持库方法。
| 归档时间: |
|
| 查看次数: |
6624 次 |
| 最近记录: |