Android动态权限注意事项,android动态权限问题

释放双眼,带上耳机,听听看~!

最近,我发现手机的6.0权限在小米手机上存在问题,我在网上搜了很多的代码,都没有解决这个问题,所以这里记录一下自己的android 6.0权限的解决代码,如果有问题,大家可以在网上自己在找找代码去解决,不过,我发现大部分是一样的。

1.通过设置build.gradle文件来适配android 6.0.

这个很简单,只要把targetSdkVersion设置为23一下就可以,这是告诉手机这个app不支持android 6.0动态权限,所以手机会在安装时给予app所需权限。不过也存在问题,因为这样无法使用到android 6.0之后的新的特性。所以这个解决代码不是很好

compileSdkVersion 24

buildToolsVersion "24.0.2"

defaultConfig {

applicationId "com.whoislcj.rxpermissions"

minSdkVersion 15

targetSdkVersion 22

versionCode 1

versionName "1.0"

}

2.直接在代码申请动态权限。

从Android 6.0(API23)开始,当app运行时用户授予用户的权限,而不是在安装程序的时候。

系统权限分为2种,分别为normal和dangerous.

Normal permission:对于用户隐私没有危险的,在清单文件中申请就可以直接授权。

Dangerous permission:app需要访问用户的隐私信息等,即使在清单文件注册,也需要在运行是通过用户授权。

检查权限(check permission)

在android6.0及以上的sdk提供了一个检查权限的方法:ContextCompat.checkSelfPermission()。

int permission = ContextCompat.checkSelfPermission(MainActivity.this,

Manifest.permission.RECORD_AUDIO);

if (permission == PackageManager.PERMISSION_GRANTED) {

//表示已经授权

}

//PackageManager.PERMISSION_DENIED—>表示权限被否认了

如果在Activity中申请权限可以的调用:

if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) { int permission = checkSelfPermission(Manifest.permission.RECORD_AUDIO);

}

请求权限

在Android 6.0及以上,如果检查没有权限,需要主动请求权限。在请求权限是会弹出一个对话框提示用户,是否授权。

请求权限的方法:requestPermissions()。在请求权限后会有一个回调方法onRequestPermissionsResult()。

ActivityCompat.requestPermissions(MainActivity.this,

new String[]{Manifest.permission.RECORD_AUDIO},

1);

//或者 在Activity的方法调用

if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {

requestPermissions(new String[]{Manifest.permission.RECORD_AUDIO},1);

}

/** * 参数1:requestCode–>是requestPermissions()方法传递过来的请求码。 * 参数2:permissions–>是requestPermissions()方法传递过来的需要申请权限 * 参数3:grantResults–>是申请权限后,系统返回的结果,PackageManager.PERMISSION_GRANTED表示授权成功,PackageManager.PERMISSION_DENIED表示授权失败。 *

grantResults和permissions是一一对应的 */

@Override

public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull

int[] grantResults) {

super.onRequestPermissionsResult(requestCode, permissions, grantResults);

}

这里主要是参考了网上别人的博客,觉得写得很好,所以直接来用,自己也不一定写得比别人明白。动态申请主要是使用ContextCompat.checkSelfPermission(Activity,权限);来检查权限,然后对应没有的权限,使用  ActivityCompat.requestPermissions(Activity, 权限数组, 请求码);进行动态申请。

这个解决代码基本实现了android的动态权限,不过我发现在小米 的note4会不停出现提示需要权限的问题。app每次启动都会提示需要录像,照相等权限,这个可能是小米手机的设置问题,我怎么也解决不了,所以大家用这个代码时必须注意小米 note4是否也存在一打开app就提示需要权限得 问题。

android 6.0权限问题就这样将完了。

就这么简单。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值