Android动态申请权限工具类
来源:互联网 发布:淘宝快递打单怎么装 编辑:程序博客网 时间:2024/06/09 23:43
/** * Created by Administrator on 2017/5/23. * Android 6.0以上共有9组权限需要申请,组内一个权限申请成功代表其他也申请成功 */public class PermissionUtils { private static final String TAG = PermissionUtils.class.getSimpleName(); public static final int CODE_RECORD_AUDIO = 0; public static final int CODE_GET_ACCOUNTS = 1; public static final int CODE_READ_PHONE_STATE = 2; public static final int CODE_CALL_PHONE = 3; public static final int CODE_CAMERA = 4; public static final int CODE_ACCESS_FINE_LOCATION = 5; public static final int CODE_ACCESS_COARSE_LOCATION = 6; public static final int CODE_READ_EXTERNAL_STORAGE = 7; public static final int CODE_WRITE_EXTERNAL_STORAGE = 8; public static final int CODE_SEND_SMS = 9; public static final int CODE_CHANGE_WIFI_STATE = 10; public static final int CODE_CHANGE_NETWORK_STATE = 11; public static final int CODE_ACCESS_WIFI_STATE = 12; public static final int CODE_WRITE_SETTINGS = 13; public static final int CODE_MULTI_PERMISSION = 100; public static final String PERMISSION_RECORD_AUDIO = Manifest.permission.RECORD_AUDIO; public static final String PERMISSION_GET_ACCOUNTS = Manifest.permission.GET_ACCOUNTS; public static final String PERMISSION_READ_PHONE_STATE = Manifest.permission.READ_PHONE_STATE; public static final String PERMISSION_CALL_PHONE = Manifest.permission.CALL_PHONE; public static final String PERMISSION_CAMERA = Manifest.permission.CAMERA; public static final String PERMISSION_ACCESS_FINE_LOCATION = Manifest.permission.ACCESS_FINE_LOCATION; public static final String PERMISSION_ACCESS_COARSE_LOCATION = Manifest.permission.ACCESS_COARSE_LOCATION; public static final String PERMISSION_READ_EXTERNAL_STORAGE = Manifest.permission.READ_EXTERNAL_STORAGE; public static final String PERMISSION_WRITE_EXTERNAL_STORAGE = Manifest.permission.WRITE_EXTERNAL_STORAGE; public static final String PERMISSION_SEND_SMS = Manifest.permission.SEND_SMS; public static final String PERMISSION_CHANGE_WIFI_STATE = Manifest.permission.CHANGE_WIFI_STATE; public static final String PERMISSION_CHANGE_NETWORK_STATE = Manifest.permission.CHANGE_NETWORK_STATE; public static final String PERMISSION_ACCESS_WIFI_STATE = Manifest.permission.ACCESS_WIFI_STATE; public static final String PERMISSION_WRITE_SETTINGS = Manifest.permission.WRITE_SETTINGS; private static final String[] requestPermissions = { PERMISSION_RECORD_AUDIO, PERMISSION_GET_ACCOUNTS, PERMISSION_READ_PHONE_STATE, PERMISSION_CALL_PHONE, PERMISSION_CAMERA, PERMISSION_ACCESS_FINE_LOCATION, PERMISSION_ACCESS_COARSE_LOCATION, PERMISSION_READ_EXTERNAL_STORAGE, PERMISSION_WRITE_EXTERNAL_STORAGE, PERMISSION_SEND_SMS, PERMISSION_CHANGE_WIFI_STATE, PERMISSION_CHANGE_NETWORK_STATE, PERMISSION_ACCESS_WIFI_STATE, PERMISSION_WRITE_SETTINGS }; /** * Requests permission. * * @param activity * @param requestCode request code, e.g. if you need request CAMERA permission,parameters is PermissionUtils.CODE_CAMERA */ public static void requestPermission(final Activity activity, final int requestCode) { if (activity == null) { return; } Log.i(TAG, "requestPermission requestCode:" + requestCode); if (requestCode < 0 || requestCode >= requestPermissions.length) { Log.w(TAG, "requestPermission illegal requestCode:" + requestCode); return; } final String requestPermission = requestPermissions[requestCode]; Log.i(TAG, "requestPermission :" + requestPermission); //如果是6.0以下的手机,ActivityCompat.checkSelfPermission()会始终等于PERMISSION_GRANTED, // 但是,如果用户关闭了你申请的权限,ActivityCompat.checkSelfPermission(),会导致程序崩溃(java.lang.RuntimeException: Unknown exception code: 1 msg null), // 你可以使用try{}catch(){},处理异常,也可以在这个地方,低于23就什么都不做, // 个人建议try{}catch(){}单独处理,提示用户开启权限。// if (Build.VERSION.SDK_INT < 23) {// return;// } if (Build.VERSION.SDK_INT >= 23) { //检测当前app是否拥有某个权限 int checkCallPhonePermission = ContextCompat.checkSelfPermission(activity, requestPermission); //判断这个权限是否已经授权过 System.out.println("checkCallPhonePermission 0代表已经获得权限:::"+checkCallPhonePermission); if(checkCallPhonePermission != PackageManager.PERMISSION_GRANTED){ //判断是否需要 向用户解释,为什么要申请该权限 if(ActivityCompat.shouldShowRequestPermissionRationale(activity, requestPermission)) Toast.makeText(activity,requestPermission,Toast.LENGTH_SHORT).show(); ActivityCompat.requestPermissions(activity,new String[]{requestPermission},requestCode); return; }else{ } } else { } }}
在Activity中设置监听器
class AuthorityListener implements OnClickListener{ int i; public AuthorityListener(int i){ this.i=i; } @Override public void onClick(View v) { PermissionUtils.requestPermission(MainActivity.this,i); } }
findViewById(R.id.button_1).setOnClickListener(new AuthorityListener(PermissionUtils.CODE_RECORD_AUDIO));//0
阅读全文
0 0
- Android动态申请权限工具类
- android6.0动态权限申请工具类
- android 动态申请权限
- Android 动态申请权限
- android 动态申请权限
- Android动态权限申请
- Android动态申请权限
- Android动态申请权限
- android动态申请权限
- android 动态权限申请
- Android动态权限申请
- Android权限动态申请
- Android权限动态申请
- Android动态申请权限
- android 6.0 动态权限申请帮助类
- Android权限申请哪些需要动态申请
- Android 6.0 动态申请权限
- android M 动态申请权限
- 把二叉树打印成多行
- javaWeb 简单注册登录(含数据库连接) -- (二) MySQL数据库配置和连接
- 使用TabLayout、ViewPager和Fragment实现顶部菜单可滑动切换
- Ubuntu Cleaner 为系统大瘦身
- centos6.8使用yum安装redis
- Android动态申请权限工具类
- 操作系统实验之八读者优先问题
- C++中getline函数的使用
- 工具类总结
- 基于IBM Bluemix部署Java Web项目实战演练
- 三分钟理解Java中字符串(String)的存储和赋值原理
- Android 相关工具插件版本经验总结
- (Mac/Windows)在终端中用finder/explorer打开文件夹的技巧
- HDU 4632 Palindrome subsequence(区间dp)