package com...; import android.app.Activity; import android.content.pm.PackageManager; import android.support.v4.app.ActivityCompat; import android.support.v4.content.ContextCompat; import java.util.ArrayList; /** * 权限申请 */ public class PermissionUtils { /** * 申请权限 * * @param context * @param permissions * @return 如需申请,返回true,无须申请,返回false */ public static boolean isNeedToRequestPermission(Activity context, String... permissions) { if (Integer.valueOf(android.os.Build.VERSION.SDK) > 22) { ArrayList needPermission = new ArrayList(); for (String per : permissions) { if (ContextCompat.checkSelfPermission(context, per) != PackageManager.PERMISSION_GRANTED) { needPermission.add(per); } } if (needPermission.size() > 0) { String[] permission = new String[needPermission.size()]; needPermission.toArray(permission); ActivityCompat.requestPermissions(context, permission, 1); return true; } else { return false; } } else { return false; } } }
调用方法:
private void checkPermission() { if (!PermissionUtils.isNeedToRequestPermission(this, //位置信息 Manifest.permission.ACCESS_COARSE_LOCATION, Manifest.permission.ACCESS_FINE_LOCATION, //存储读权限 Manifest.permission.WRITE_EXTERNAL_STORAGE, Manifest.permission.READ_EXTERNAL_STORAGE, //手机状态 Manifest.permission.READ_PHONE_STATE, //相机权限 Manifest.permission.CAMERA, //麦克风权限 Manifest.permission.RECORD_AUDIO )) { startSplashActivity(); // 数据预加载 } } @Override public void onRequestPermissionsResult(int requestCode, String[] permissions, int[] grantResults) { super.onRequestPermissionsResult(requestCode, permissions, grantResults); if (requestCode == 1) { for (int i = 0; i < grantResults.length; i++) { if (grantResults[i] < 0) { new CommonDialog(PermissionActivity.this, R.style.dialog, "授权拒绝,请重新登入并授予权限!", new CommonDialog.OnCloseListener() { @Override public void onClick(CommonDialog dialog, boolean confirm) { if (confirm) { finish(); } } }).showCommonDialog(); return; } } startSplashActivity(); } }
注:CommonDialog是自定义封装的一个弹窗View
下载地址:https://download.csdn.net/download/qq_26280383/15833884