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