权限适配工具类,自定义封装

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

猜你喜欢

转载自blog.csdn.net/qq_26280383/article/details/114867322
今日推荐