您的位置:首页 > 移动开发 > Android开发

android 6.0 权限适配

2016-09-30 17:05 417 查看
权限工具类

/**
* Created by Kang on 2016/9/28.
*/
public class PermissionsUtils {

private static final java.lang.String TAG = PermissionsUtils.class.getSimpleName();

/**
* 请求权限 首先检测 有权限 返回 , 没权限申请权限
*
* @param activity   activity实例
* @param permission 权限数组 填写一个
* @param requstCode 请求码
*/
public static void requestActivityPermission(Activity activity, String permission, int requstCode, HavePermission havePermission) {

int permissionResult = ActivityCompat.checkSelfPermission(activity, permission);

//检测是否有权限 有权限 返回
if (permissionResult == PackageManager.PERMISSION_GRANTED) {
havePermission.callBack();
return;
}

//否则申请所需权限
ActivityCompat.requestPermissions(activity, new String[]{permission}, requstCode);

}

/**
* 回调结果
*
* @param activity
* @param info
*/
public static void onAlertDialog(final Activity activity, String info) {

new AlertDialog.Builder(activity)
.setTitle("需要权限:")
.setMessage("必须需要:" + info + ",请到设置>应用>" + activity.getApplication().getApplicationInfo().loadLabel(activity.getPackageManager()) + ">权限中开启")
.setPositiveButton("确定", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
activity.finish();
}
})
.setNegativeButton("取消", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
activity.finish();
}
})
.show();
}

/**
* 全部同意获取权限返回true  否则返回false
* @param grantResults 结果
* @return
*/
public static boolean isAllGranted(int[] grantResults) {
boolean flag = false;
for (int grant : grantResults) {
if(grant != PackageManager.PERMISSION_GRANTED) {
flag = false;
break;
}
flag =true;
}
return flag;
}

public static void requestFragmentPermission(Fragment fragment,String permission,int REQUST_CODE,HavePermission havePermission) {

int permissionResult = ContextCompat.checkSelfPermission(fragment.getActivity(), permission);

//检测是否有权限 有权限 返回
if (permissionResult == PackageManager.PERMISSION_GRANTED) {
havePermission.callBack();
return;
}
//否则申请所需权限
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {

fragment.requestPermissions(new String[]{permission}, REQUST_CODE);
}
}

/**
* 获取到权限回调
*/
public interface HavePermission {
//有权限回调
void callBack();
}

/**
* 获取多个权限
*
* @param activity
* @param requestCode
*/
public static void requestMutilActivityPermission(final Activity activity, String[] permissions,final int requestCode,HavePermission havePermission) {

final List<String> permissionsList = new ArrayList<>();

for (int i = 0; i < permissions.length; i++) {
addPermission(activity, permissionsList,permissions[i]);
}
if (permissionsList.size() > 0) {
ActivityCompat.requestPermissions(activity, permissionsList.toArray(new String[permissionsList.size()]),
requestCode);
}else{
havePermission.callBack();
}
}

/**
* 添加权限
*
* @param activity
* @param permissionsList
* @param permission
* @return
*/
private static boolean addPermission(Activity activity, List<String> permissionsList, String permission) {
if (ActivityCompat.checkSelfPermission(activity, permission) != PackageManager.PERMISSION_GRANTED) {
permissionsList.add(permission);
return false;
}
return true;
}
}


回调

/**
* 权限是否授权 回调
* @param requestCode 请求码
* @param permissions 权限数组
* @param grantResults 结果数组
*/
@Override
public void onRequestPermissionsResult(int requestCode, String[] permissions, int[] grantResults) {
MyLog.e(TAG,"onRequestPermissionsResult");
switch (requestCode) {
case REQUEST_ALL_PERMISSION:

//是否全部同意获取权限
boolean flag = PermissionsUtils.isAllGranted(grantResults);

if (flag){
initBaiduLc();
} else {
//没有全部获得 提示用户
PermissionsUtils.onAlertDialog(this,"定位,储存卡权限程序才能正常运行");
}
break;
default:
super.onRequestPermissionsResult(requestCode, permissions, grantResults);
}

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  android