Android 6.0动态申请权限
2017-05-25 11:23
531 查看
参考:http://blog.csdn.net/wwdlss/article/details/52909098 http://www.jianshu.com/p/a51593817825 http://www.cnblogs.com/tangs/articles/6377347.html 在Adroid系统6.0以前,权限的处理是在App安装时授权,授权完了才能完成相关的安装。而在6.0的系统上,是先安装App,在安装完之后,在使用相关权限的操作时,才会弹出权限的提示框,用户同意授权之后才能正常使用。谷歌这样做,可以让用户更加清醒的认识相关权限的使用,在一定程度上更加人性化和保护了用户的隐私。谷歌官方将权限分为了两类,一个是正常权限(Normal Permissions),这类权限不涉及用户隐私,是不需要用户进行授权的,比如访问网络,手机震动等。还有一类是危险权限(Dangerous Permissions),一般是涉及到用户隐私的,需要用户进行授权,比如操作SD卡的写入,相机,录音等。
Normal Permissions:
ACCESS_LOCATION_EXTRA_COMMANDSACCESS_NETWORK_STATEACCESS_NOTIFICATION_POLICYACCESS_WIFI_STATEBLUETOOTHBLUETOOTH_ADMINBROADCAST_STICKYCHANGE_NETWORK_STATECHANGE_WIFI_MULTICAST_STATECHANGE_WIFI_STATEDISABLE_KEYGUARDEXPAND_STATUS_BARGET_PACKAGE_SIZEINSTALL_SHORTCUTINTERNETKILL_BACKGROUND_PROCESSESMODIFY_AUDIO_SETTINGSNFCREAD_SYNC_SETTINGSREAD_SYNC_STATSRECEIVE_BOOT_COMPLETEDREORDER_TASKSREQUEST_INSTALL_PACKAGESSET_ALARMSET_TIME_ZONESET_WALLPAPERSET_WALLPAPER_HINTSTRANSMIT_IRUNINSTALL_SHORTCUTUSE_FINGERPRINTVIBRATEWAKE_LOCKWRITE_SYNC_SETTINGSDangerous Permissions:
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 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需要动态申请的权限遵循权限组的概念,权限组中只要一个权限被允许使用了,默认整个组中的所有权限就都被允许使用了。以permission-group.CONTACTS组为例
,如果android.permission.WRITE_CONTACTS权限被允许使用了,那么
android.permission.GET_ACCOUNTS和android.permission.READ_CONTACTS这两个权限就都被允许使用了。需要注意的是即时需要动态授权的权限也需要在AndroidManifest.xml文件里声明。
申请步骤
将targetSdkVersion设置为23,注意,如果你将targetSdkVersion设置为>=23,则必须按照Android谷歌的要求,动态的申请权限,如果你暂时不打算支持动态权限申请,则targetSdkVersion最大只能设置为22.2 在AndroidManifest.xml中申请你需要的权限,包括普通权限和需要申请的特殊权限。3.开始申请权限,此处分为3部。(1)检查是否由此权限checkSelfPermission(),如果已经开启,则直接做你想做的。(2)如果未开启,则判断是否需要向用户解释为何申请权限shouldShowRequestPermissionRationale。(3)如果需要(即返回true),则可以弹出对话框提示用户申请权限原因,用户确认后申请权限requestPermissions(),如果不需要(即返回false),则直接申请权限requestPermissions()。申请权限代码:1:检查是否拥有权限检查是否已拥有了权限,可以使用ContextCompat.checkSelfPermission(Context context, String permission);checkSelfPermission方法中有两个参数,分别是上下文,以及所申请的权限。如果有权限,请让它直接去读取短信信息。如果没有权限则去申请。2:申请权限申请权限则是使用:public static void requestPermissions(final Activity activity,final String[] permissions, final int requestCode) {}requestPermissions方法中需要三个参数,当前的activity,所申请的权限,可以是多个,最后就是请求码,既然有请求码说明它会有一个回调,也就是我们下面要讲的处理回调。3:处理权限回调处理权限回调,需要在Activity中重写onRequestPermissionsResult方法:然后在方法内判断用户是授权了该权限组还是拒绝授权,如果授权则就去获取短信信息,否则,在这里我只是显示了一个toast提示框。这里再次说明下,权限组内只要有一个被授权,其他的权限也就有了权限,这也是为什么直接使用grantResults[0] == PackageManager.PERMISSION_GRANTED的原因。
相关文章推荐
- Android 6.0权限动态申请
- Android权限详解(含6.0动态申请)
- Android 6.0 动态权限申请
- Android 6.0动态申请权限
- android 6.0及以上 运行时权限申请(动态权限申请)
- android 6.0 动态权限申请帮助类
- Android 6.0 动态申请权限
- Android 6.0(API 23) 含以上 java.lang.SecurityException 权限需动态申请(危险权限)
- android简单学习6.0的动态权限申请
- Android 6.0 动态权限申请注意事项
- Android 6.0 动态权限申请(权限分组)
- Android 6.0 动态权限申请详解
- Android 6.0动态权限申请
- android 6.0 以上如何动态申请权限?
- Android 6.0+动态权限申请模板
- 【android 6.0 动态申请权限的基本方法和框架使用】
- 一行代码搞定Android 6.0动态权限申请
- android拨打电话崩溃6.0以上实时动态权限申请
- android 6.0以后动态申请多个危险权限笔记
- Android 6.0动态申请权限