Android 6.0 Permission权限机制
2016-01-09 23:17
495 查看
Android 6.0 Permission权限机制
Android 6.0引入了一种新的权限机制(其实和iOS类似),叫它运行时权限检测吧,让用户在App运行的时时候授予相关权限。比如App要执行拨打电话功能,先要弹出一个请求拨号权限的对话框,待用户同意授予此权限的时候才能继续操作。系统权限被分为两种:normal(普通权限)和dangerous(危险权限)
1.normal:这类权限不会危及用户的隐私,系统会自动给予权限
2.dangerous:这类权限和normal相对,需要用户同意后才能获得权限。危险权限被归并分组,同组内的一条权限被授予后,其他的权限也将被授予。
什么情况下需要适配6.0新的权限模型呢?
怎么做呢?
检查是否获得该权限
.如果用户未授予该权限, 去请求该权限
执行功能
//1.检查是否获得CALL_PHONE权限,未获得 通过 ActivityCompat.requestPermissions方法去请求权限 if (ContextCompat.checkSelfPermission(this, Manifest.permission.CALL_PHONE) == PackageManager.PERMISSION_DENIED) { //弹出介绍对话框 向用户解释 为什么需要这个权限才能使用功能 if (!ActivityCompat.shouldShowRequestPermissionRationale(MainActivity.this, Manifest.permission.CALL_PHONE)) { AlertDialog dialog = new AlertDialog.Builder(MainActivity.this).create(); dialog.setMessage("需要授予拨打电话的权限 ,才能使用该功能"); dialog.setButton(AlertDialog.BUTTON_POSITIVE, "确定", new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { ActivityCompat.requestPermissions(MainActivity.this, new String[]{Manifest.permission.CALL_PHONE},REQUEST_CODE_ASK_PERMISSIONS); } }); dialog.show(); } } else { callPhone(); }
//重写Activity的onRequestPermissionsResult()方法 监听用户处理权限的结果 @Override public void onRequestPermissionsResult(int requestCode, String[] permissions, int[] grantResults) { switch (requestCode) { case REQUEST_CODE_ASK_PERMISSIONS: if (grantResults[0] == PackageManager.PERMISSION_GRANTED) { callPhone(); } else { Toast.makeText(this, "未获得权限", 0).show(); } break; default: super.onRequestPermissionsResult(requestCode, permissions, grantResults); break; } }
1.安装程序后,去设置->应用->app名字->权限 发现没有获得电话权限
2.运行程序,点击按钮出现如下
2.点击 确定 出现系统权限请求对话框 ,此时点击允许 执行callphone
相关文章推荐
- Android6.0动态获取权限
- android6.0SDK中删除HttpClient的相关类的解决方法
- Android M 新的运行时权限开发者需要知道的一切
- Android6.0权限适配实践
- android6.0 切换到指定wifi
- 解决 Android M(6.0) 找不到 org.apache.http.*
- Android6.0运行时权限
- 一行代码搞定漂亮的Android6.0权限申请界面
- Android Study 之聊聊权限那点事儿~别怕,就是干~!!!
- Handling App Links
- Android中获取手机IMEI,IMSI, MAC(Android 6.0、支持4G环境获取)工具类(标识用户唯一)
- 基于Android 6.0获取指定Mac地址WiFi信息
- Android 6.0 应用权限(二) -- 与系统权限一起工作(Working with System Permissions) 使用MarkDown重新整理了排版
- 目前最流行的运行时权限请求框架PermissionsDispatcher、RxPermissions和easypermissions的使用和对比
- android6.0权限管理
- Android6.0权限快速申请(基于RxJava2更优雅)
- Android6.0M权限管理实战,完美轻量级封装
- Android 6.0动态权限及小米(MIUI)权限的特殊处理
- 用android view中的tag传送数据