Android学习之6.0系统执行时权限设置
2017-07-03 09:56
302 查看
今天讲讲工作中遇见的6.0运行时权限处理问题。起因就是设置版本号更新时,在6.0系统会报错,起因就是6.0动态权限设置,由于在google为了安全考虑,对于一些特定权限会征询客户授权,这当然会大大添加客户资料的安全性,当然也会让我们在工作中做一些小小的变动。以下就讲一下我在工作中是怎样解决这些问题的
首先copy一下6.0会征求用户授权的权限
以上copy自鸿洋大神的介绍,我就不多说了,大家了解一下即可了,以下我以版本号更新中的6.0权限为例,来学习一下怎样动态加入权限
permission.WRITE_EXTERNAL_STORAGE是6.0权限,版本号更新会用到这个权限
权限请求的处理
好啦,动态设置6.0权限还是非常easy的,大家了解一下即可了。基本的问题就是你要清楚哪些权限是6.0要动态获取的权限。
以下推荐一个6.0权限使用库,毕竟那么多权限。我们一个一个设置还是非常麻烦的,所以要是提前就将我们要用到的6.0动态获取权限都进行授权的话。那就方便多了
PermissionGen
用法:
加入依赖:
请求权限的两种方式:
权限请求结果
请求成功
请求失败
这是一个非常easy的6.0权限处理库。大家能够借鉴一下。
首先copy一下6.0会征求用户授权的权限
//联系人的读写权限 group:android.permission-group.CONTACTS permission:android.permission.WRITE_CONTACTS permission:android.permission.GET_ACCOUNTS permission:android.permission.READ_CONTACTS //拨打电话权限 group:android.permission-group.PHONE permission:android.permission.READ_CALL_LOG permission:android.permission.READ_PHONE_STATE permission:android.permission.CALL_PHONE permission:android.permission.WRITE_CALL_LOG permission:android.permission.USE_SIP permission:android.permission.PROCESS_OUTGOING_CALLS permission:com.android.voicemail.permission.ADD_VOICEMAIL //日历权限 group:android.permission-group.CALENDAR permission:android.permission.READ_CALENDAR permission:android.permission.WRITE_CALENDAR //相机权限 group:android.permission-group.CAMERA permission:android.permission.CAMERA //传感器权限 group:android.permission-group.SENSORS permission:android.permission.BODY_SENSORS //定位权限 group:android.permission-group.LOCATION permission:android.permission.ACCESS_FINE_LOCATION permission:android.permission.ACCESS_COARSE_LOCATION //内存读写权限 group:android.permission-group.STORAGE permission:android.permission.READ_EXTERNAL_STORAGE permission:android.permission.WRITE_EXTERNAL_STORAGE //录音权限 group:android.permission-group.MICROPHONE permission:android.permission.RECORD_AUDIO //SMS短信权限 group:android.permission-group.SMS permission:android.permission.READ_SMS permission:android.permission.RECEIVE_WAP_PUSH permission:android.permission.RECEIVE_MMS permission:android.permission.RECEIVE_SMS permission:android.permission.SEND_SMS permission:android.permission.READ_CELL_BROADCASTS
以上copy自鸿洋大神的介绍,我就不多说了,大家了解一下即可了,以下我以版本号更新中的6.0权限为例,来学习一下怎样动态加入权限
permission.WRITE_EXTERNAL_STORAGE是6.0权限,版本号更新会用到这个权限
private void uploadVersion() { //对权限进行检測 if (ContextCompat.checkSelfPermission(MainActivity.this, Manifest.permission.WRITE_EXTERNAL_STORAGE) != PackageManager.PERMISSION_GRANTED) { //没有权限时进行申请授权,context。权限数组。int请求码 ActivityCompat.requestPermissions(MainActivity.this, new String[]{Manifest.permission.WRITE_EXTERNAL_STORAGE}, 1001); } else { //有权限时运行版本号更新接口 GetVersionEngine engine = new GetVersionEngine(getRequestTag()); engine.sendRequest(); } }
权限请求的处理
@Override public void onRequestPermissionsResult(int requestCode, String[] permissions, int[] grantResults) { super.onRequestPermissionsResult(requestCode, permissions, grantResults); if (requestCode == 1001) {//匹配请求码 if (grantResults[0] == PackageManager.PERMISSION_GRANTED) { //权限设置成功,运行版本号更新接口 GetVersionEngine engine = new GetVersionEngine(getRequestTag()); engine.sendRequest(); } else { // 权限拒绝。能够进行提示 } } }
好啦,动态设置6.0权限还是非常easy的,大家了解一下即可了。基本的问题就是你要清楚哪些权限是6.0要动态获取的权限。
以下推荐一个6.0权限使用库,毕竟那么多权限。我们一个一个设置还是非常麻烦的,所以要是提前就将我们要用到的6.0动态获取权限都进行授权的话。那就方便多了
PermissionGen
用法:
加入依赖:
compile 'com.lovedise:permissiongen:0.0.6'
请求权限的两种方式:
PermissionGen.with(MainActivity.this) .addRequestCode(100) .permissions( Manifest.permission.READ_CONTACTS, Manifest.permission.RECEIVE_SMS, Manifest.permission.WRITE_CONTACTS) .request();
PermissionGen.needPermission(ContactFragment.this, 100, new String[] { Manifest.permission.READ_CONTACTS, Manifest.permission.RECEIVE_SMS, Manifest.permission.WRITE_CONTACTS } );
权限请求结果
@Override public void onRequestPermissionsResult(int requestCode, String[] permissions, int[] grantResults) { PermissionGen.onRequestPermissionsResult(this, requestCode, permissions, grantResults); }
请求成功
@PermissionSuccess(requestCode = 100) public void doSomething(){ Toast.makeText(this, "Contact permission is granted", Toast.LENGTH_SHORT).show(); }
请求失败
@PermissionFail(requestCode = 100) public void doFailSomething(){ Toast.makeText(this, "Contact permission is not granted", t.LENGTH_SHORT).show(); }
这是一个非常easy的6.0权限处理库。大家能够借鉴一下。
相关文章推荐
- Android学习之6.0系统运行时权限设置
- Android学习_6.0以上系统的运行时权限
- 从零开始--系统深入学习android(实践-让我们开始写代码-Android框架学习-5.设置(Settings))
- android SystemClock设置系统时间需要system权限
- 【Android】实现类似于百度长时间不用APP屏幕变暗——不用修改系统设置权限
- Android 文件系统的权限设置
- Android 6.0 开发者对系统权限的使用与练习(Permissions Best Practices)
- 从零开始--系统深入学习android(实践-让我们开始写代码-Android框架学习-6.权限(Permissions))
- 关于Android系统中system.img和data.img中文件系统的权限设置
- android 6.0 权限管理的学习资料和使用例子
- android系统权限设置
- Android 6.0 应用权限(二) -- 与系统权限一起工作(Working with System Permissions)
- Android 文件系统的权限设置
- Android:系统广播、action、权限设置汇总
- android应用内获取系统权限,来设置一些系统开关
- android系统执行命令权限问题(permission denied)
- 从零开始--系统深入学习android(实践-让我们开始写代码-Android框架学习-5.设置(Settings))
- android 平台搭建学习01--第一个界面的菜单设置及与其他三个界面的相互跳转(天气预报系统)
- android平台搭建学习 03--界面各按钮的设置(天气预报系统)
- 【已解决】Android 6.0权限设置,导致程序崩溃