## Android 6.0 权限申请 ##
2016-08-03 20:45
330 查看
Android 6.0 权限申请
1. 以前的权限申请(sdk<23)
直接在AndroidManifest.xml中申明即可:
<uses-permission android:name="android.permission.READ_PHONE_STATE"></uses-permission> <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"></uses-permission>
但是,Android sdk>=23(6.0)申明的权限是直接被拒绝的.需要我们在
运行时去申请!
2. 运行时权限申请
void checkPermission() { final List<String> permissionsList = new ArrayList<>(); if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) { if ((checkSelfPermission(Manifest.permission.READ_PHONE_STATE) != PackageManager.PERMISSION_GRANTED)) permissionsList.add(Manifest.permission.READ_PHONE_STATE); if ((checkSelfPermission(Manifest.permission.WRITE_EXTERNAL_STORAGE) != PackageManager.PERMISSION_GRANTED)) permissionsList.add(Manifest.permission.WRITE_EXTERNAL_STORAGE); if (permissionsList.size() != 0) { requestPermissions(permissionsList.toArray(new String[permissionsList.size()]), 100); }else { //已经不是第一次,已经有权限 Log.e("test","permissionsList.size()==0"); } } }
这个
checkPermission()是
Activity的方法.
所以在Application中是无法申请的,一些第三方库尽量避免在Application中初始化时调用
危险权限!
3. 回调
private int count=0; @TargetApi(Build.VERSION_CODES.M) @Override public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) { count++; Log.e("test","onRequestPermissionsResult:"+count); if (requestCode==100){ if (grantResults.length>0 && (checkSelfPermission(Manifest.permission.READ_PHONE_STATE) == PackageManager.PERMISSION_GRANTED) && (checkSelfPermission(Manifest.permission.WRITE_EXTERNAL_STORAGE) == PackageManager.PERMISSION_GRANTED)){ Toast.makeText(this, "成功", Toast.LENGTH_SHORT).show(); }else { } } }
在logcat中:
08-03 20:09:20.545 16735-16735/didikee.com.demoapk E/test: onRequestPermissionsResult:1
结论:回调只会走一次!
当我们再次运行程序时,logcat中日志:
08-03 20:10:14.165 16735-16735/didikee.com.demoapk E/test: permissionsList.size()==0
结论:第一次获取到权限就会一直生效(不排除用户自己去去掉给你授予的某些权限 =.= 所以权限的申请还是按照需求来,别什么都不管就把权限列表轮一遍...这是大忌!)
相关文章推荐
- android 6.0权限动态申请
- android6.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 权限申请辅助 ----PermissionsHelper
- android简单学习6.0的动态权限申请
- Android 6.0上的权限申请解析
- android 6.0运行时权限的申请(微信在android 6.0上实现运行时请求权限的实现)
- 你必须了解的Android 6.0权限申请
- Android 6.0 app的权限申请
- Android 6.0动态权限申请的处理
- Android 6.0权限申请详解及权限资料整理
- Android 6.0 权限的申请 与 封装