</pre><p></p><p></p><p></p><pre name="code" class="java">package com.cxandroid.suiji.utils;
import android.Manifest;
import android.annotation.TargetApi;
import android.app.Activity;
import android.app.AlertDialog;
import android.content.Context;
import android.content.DialogInterface;
import android.content.pm.PackageManager;
import android.os.Build;
import android.os.Message;
import android.support.annotation.NonNull;
import android.support.v4.app.ActivityCompat;
import android.support.v4.content.ContextCompat;
/**
* 权限管理类
* 作者:chenxiu on 03 月 11 日 10:18
* Success is getting what you want
* happiness is wanting what you get.
*/
public class JurisdictionUtils {
private static Activity activity;
public static final int WRITE_EXTERNAL_STORAGE_REQUEST_CODE = 1;
final private int REQUEST_CODE_ASK_PERMISSIONS = 123;
public static JurisdictionUtils newInstance(Activity context){
return new JurisdictionUtils(context);
}
public JurisdictionUtils(Activity context){
activity = context;
}
/**
* 检查是否拥有文件读写权限
* true 有 false 无
* @return
*/
@TargetApi(Build.VERSION_CODES.M)
public boolean getFilePermission() {
if(Build.VERSION.SDK_INT<23){
return true;
}
return getPermission(Manifest.permission.WRITE_EXTERNAL_STORAGE,"你需要开启文件读取权限\n设置>应用>管理权限");
}
/**
* 检查是否拥有相机读写权限
* true 有 false 无
* @return
*/
public boolean getCameraPermission() {
if(Build.VERSION.SDK_INT<23){
return true;
}
return getPermission(Manifest.permission.CAMERA,"你需要开启相机权限\n设置>应用>管理权限");
}
/**
* 检查是否拥有拨打电话权限
* true 有 false 无
* @return
*/
public boolean getPhonePermission() {
if(Build.VERSION.SDK_INT<23){
return true;
}
return getPermission(Manifest.permission.CALL_PHONE,"你需要开启拨打电话权限\n设置>应用>管理权限");
}
/**
* 检查是否拥有获取定位权限
* true 有 false 无
* @return
*/
@TargetApi(Build.VERSION_CODES.M)
public boolean getLocationPermission() {
if(Build.VERSION.SDK_INT<23){
return true;
}
return getPermission(Manifest.permission.ACCESS_FINE_LOCATION,"你需要开启定位权限\n设置>应用>管理权限");
}
@TargetApi(Build.VERSION_CODES.M)
public boolean getPermission(@NonNull final String permission,String message){
int hasWriteContactsPermission = activity.checkSelfPermission(permission);
if (hasWriteContactsPermission != PackageManager.PERMISSION_GRANTED) {
if (!activity.shouldShowRequestPermissionRationale(permission)) {
showMessageOKCancel(message,
new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
activity.requestPermissions(new String[]{permission},
REQUEST_CODE_ASK_PERMISSIONS);
}
});
return false;
}
activity.requestPermissions(new String[]{permission},
WRITE_EXTERNAL_STORAGE_REQUEST_CODE);
}
return true;
}
private void showMessageOKCancel(String message, DialogInterface.OnClickListener okListener) {
new AlertDialog.Builder(activity)
.setMessage(message)
.setPositiveButton("OK", okListener)
.setNegativeButton("Cancel", null)
.create()
.show();
}
}
使用例子(选取图片例子):
<pre name="code" class="java"> if(JurisdictionUtils.newInstance(getActivity()).getCameraPermission()) { //判断是否有相机权限
if(JurisdictionUtils.newInstance(getActivity()).getFilePermission()) { //判断是否有读取文件权限
<span> </span>相应操作...
}
}