android 6.0动态权限管理类

</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>相应操作...
                    }
                }
 


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值