Android6.0以上权限相关Util
来源:互联网 发布:学directx编程要多久 编辑:程序博客网 时间:2024/05/17 21:53
Android6.0以上并不能直接创建文件或者文件夹,需要手动申请相关权限(拨打电话等都需要)
import android.app.Activity;import android.content.Context;import android.content.pm.PackageManager;import android.os.Build;import android.support.v4.app.ActivityCompat;import android.support.v4.content.ContextCompat;/** * 6.0+权限工具类 * Created by Jing on 2017/3/10. */public class PermissionsUtil { public static final int REQUEST_WRITE_EXTERNAL_STORAGE = 300; //写入外部存储 public static final int REQUEST_MOUNT_UNMOUNT_FILESYSTEMS = 301; //挂载文件系统 public static final int REQUEST_ACCESS_NETWORK_STATE = 302; public static final int REQUEST_ACCESS_WIFI_STATE = 303; public static final int REQUEST_READ_PHONE_STATE = 304; //读取电话状态 /** * 判断是否有权限 * PackageManager.PERMISSION_GRANTED 授予权限 * PackageManager.PERMISSION_DENIED 缺少权限 */ public boolean checkPermissions(Context context, String permission) { return ContextCompat.checkSelfPermission(context, permission) == PackageManager.PERMISSION_GRANTED; } /** * 6.0+申请权限,必须传入activity * * @param activity * @param permission * @param requestCode * @param listener */ public void requestPermissions(Activity activity, String permission, int requestCode, OnPermissionGrantedListener listener) { if (Build.VERSION.SDK_INT >= 23) { int checkCallPhonePermission = ContextCompat.checkSelfPermission(activity.getApplicationContext(), permission); if (checkCallPhonePermission != PackageManager.PERMISSION_GRANTED) { ActivityCompat.requestPermissions(activity, new String[]{permission}, requestCode); } else { //权限已有,直接调用 if (listener != null) listener.OnPermission(); } } else { //6.0以下直接调用 if (listener != null) listener.OnPermission(); } } /** * 单纯申请权限 * * @param activity * @param permission * @param requestCode */ public void requestPermissions(Activity activity, String permission, int requestCode) { if (Build.VERSION.SDK_INT >= 23) { int checkCallPhonePermission = ContextCompat.checkSelfPermission(activity.getApplicationContext(), permission); if (checkCallPhonePermission != PackageManager.PERMISSION_GRANTED) { ActivityCompat.requestPermissions(activity, new String[]{permission}, requestCode); } } } public interface OnPermissionGrantedListener { void OnPermission(); }}
申请权限必须要在Activity中申请,并在其中重写onRequestPermissionsResult方法
//申请文件写入权限,创建文件夹new PermissionsUtil().requestPermissions(this, Manifest.permission.WRITE_EXTERNAL_STORAGE, PermissionsUtil.REQUEST_WRITE_EXTERNAL_STORAGE, new PermissionsUtil.OnPermissionGrantedListener() { @Override public void OnPermission() { //createFile(); } });
Activity中重写权限反馈方法
@Override public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) { super.onRequestPermissionsResult(requestCode, permissions, grantResults); switch (requestCode) { case PermissionsUtil.REQUEST_WRITE_EXTERNAL_STORAGE: if (grantResults[0] == PackageManager.PERMISSION_GRANTED) { //createFile(); } else { //CommonUtil.showToast(this, "文件写入权限被拒绝,无法使用头像上传等功能"); } break; default: super.onRequestPermissionsResult(requestCode, permissions, grantResults); } }
目前的权限分组,组中一个权限被申请后,其余权限也都有了。
0 0
- Android6.0以上权限相关Util
- Android6.0以上获取相关权限
- Android6.0以上权限检查
- Android6.0以上权限申请
- android6.0以上特殊权限
- Android6.0以上权限申请
- Android6.0权限相关
- android6.0以上版本动态获取权限
- android6.0以上动态申请权限问题。
- [Android开发] Android6.0以上权限总结
- android6.0以上权限申请工具类
- Android6.0以上,动态权限申请
- android6.0以上权限动态请求实现
- android6.0以及以上的权限处理
- Android6.0以上版本打电话获取权限
- Android6.0以上弹框获取权限
- android6.0以上获取权限简单封装
- android6.0以上权限申请工具类
- 剑指Offer-11.数值的整数次方
- IAR 使用小技巧--持续更新
- 24.session聚合统计之重构实现思路与重构session聚合
- TensorFlow学习笔记(1)——conv2d函数的padding参数详解
- C++只在栈或堆上实例化对象
- Android6.0以上权限相关Util
- myeclipse2014如何添加源码反编译工具插件
- ZigBee 用IO口模拟I2C驱动程序
- nginx 中的 rewrite 和 try_files
- MyEclipse配置Tomcat7
- django入门笔记
- 图解插入排序--直接插入排序
- uva 275 Expanding Fractions
- 移动端如何让页面强制横屏