Android6.0以上权限相关Util

    xiaoxiao2021-03-25  103

    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); } }

    目前的权限分组,组中一个权限被申请后,其余权限也都有了。

    转载请注明原文地址: https://ju.6miu.com/read-21273.html

    最新回复(0)