动态申请权限工具类

看了看之前贴出来的没有动态申请权限的工具类,现在补上,里面的权限改一改适合自己公司即可。

public class Authority {

    private static final int MY_PERMISSION_REQUEST_CODE = 10000;
    //申请的权限,字符串模式
    public static final String CALL_PHONE = Manifest.permission.CALL_PHONE;//打电话权限
    public static final String CAMERA = Manifest.permission.CAMERA;//相机摄像头权限
    public static final String READ_EXTERNAL_STORAGE = Manifest.permission.READ_EXTERNAL_STORAGE;//读取内存卡权限
    public static final String WRITE_EXTERNAL_STORAGE = Manifest.permission.WRITE_EXTERNAL_STORAGE;//写入内存卡权限

    //申请的权限,数组模式
    public static final String[] CALL_PHONE_ARR = {Manifest.permission.CALL_PHONE};//打电话权限
    public static final String[] CAMERA_ARR = {Manifest.permission.CAMERA};//相机摄像头权限
    public static final String[] READ_EXTERNAL_STORAGE_ARR = {Manifest.permission.READ_EXTERNAL_STORAGE};//读取内存卡权限
    public static final String[] WRITE_EXTERNAL_STORAGE_ARR = {Manifest.permission.WRITE_EXTERNAL_STORAGE};//写入内存卡权限

    //权限数组
    public static final String[] str = {
            Manifest.permission.CALL_PHONE,//打电话
            Manifest.permission.CAMERA, //相机
//            Manifest.permission.ACCESS_NETWORK_STATE,//网络
//            Manifest.permission.ACCESS_WIFI_STATE,//wifi
//            Manifest.permission.CHANGE_WIFI_STATE,//wifi
//            Manifest.permission.INTERNET,//网络
            Manifest.permission.READ_EXTERNAL_STORAGE,//获取sd
            Manifest.permission.WRITE_EXTERNAL_STORAGE//写入sd
    };

    //申请权限,多项申请(Activity)
    public static void CallMobile(Activity mContext) {
        ActivityCompat.requestPermissions(
                mContext,
                str,
                MY_PERMISSION_REQUEST_CODE//回调的标识
        );
    }

    //申请权限,单项权限,(Activity)
    public static void CallMobileArr(Activity mContext, String[] str) {
        ActivityCompat.requestPermissions(
                mContext,
                str,
                MY_PERMISSION_REQUEST_CODE//回调的标识
        );
    }

    //申请权限(fragment)
    //  requestPermissions(Authority.CAMERA_ARR, 10000);这种模式,不可以显示申请权限弹框.如果禁止所申请的权限,可以显示自定义弹框
    //下面这种模式:可以显示申请权限弹框.如果禁止所申请的权限,并且“下次不会再次提醒”已勾选,不会显示弹框
    @TargetApi(Build.VERSION_CODES.M)
    public static void CallMobileFragment(Activity mContext, String[] str) {
        mContext.requestPermissions(str, MY_PERMISSION_REQUEST_CODE);
    }


    //判断权限是否申请通过
    public static boolean lacksPermission(Context mContexts, String permission) {
        return ContextCompat.checkSelfPermission(mContexts, permission) ==
                PackageManager.PERMISSION_DENIED;
    }


    /**
     * @param s                  提示语
     * @param applicationContext 上下文
     * @param type               类型,是否关闭页面 1关闭,0不关闭
     */
    public static void openAppDetails(String s, final Activity applicationContext, final int type) {
        final android.app.AlertDialog.Builder builder = new android.app.AlertDialog.Builder(applicationContext);
        builder.setMessage(s);
        builder.setCancelable(false);
        builder.setPositiveButton("去手动授权", new DialogInterface.OnClickListener() {
            @Override
            public void onClick(DialogInterface dialog, int which) {
                Intent intent = new Intent();
                intent.setAction(Settings.ACTION_APPLICATION_DETAILS_SETTINGS);
                intent.addCategory(Intent.CATEGORY_DEFAULT);
                intent.setData(Uri.parse("package:" + applicationContext.getPackageName()));
                intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
                intent.addFlags(Intent.FLAG_ACTIVITY_NO_HISTORY);
                intent.addFlags(Intent.FLAG_ACTIVITY_EXCLUDE_FROM_RECENTS);
                applicationContext.startActivity(intent);
                if (type == 1) {
                    applicationContext.finish();
                }

            }
        });
        builder.setNegativeButton("取消", new DialogInterface.OnClickListener() {

            @Override
            public void onClick(DialogInterface dialog, int which) {
                dialog.dismiss();
                if (type == 1) {
                    applicationContext.finish();
                }
            }
        });
        builder.show();
    }

    //设置popu背景色
    public static void setBackgroundAlpha(float bgAlpha, Activity mContext) {
        WindowManager.LayoutParams lp = mContext.getWindow()
                .getAttributes();
        lp.alpha = bgAlpha;
        mContext.getWindow().setAttributes(lp);
    }
}
 

发布了58 篇原创文章 · 获赞 6 · 访问量 1万+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章