Android6.0权限permission提醒工具类

来源:互联网 发布:咪咕善跑是什么软件 编辑:程序博客网 时间:2024/06/01 14:51
package com.yiban.caesar.Utils;import android.content.Context;import android.content.pm.PackageManager;import android.content.pm.PermissionInfo;import android.support.v4.content.ContextCompat;import java.util.ArrayList;import java.util.Arrays;import java.util.List;/** * Created by LXL on 2017/5/25. */public class CheckPermissionUtils {    private static String TAG = "CheckPermissionUtils";    /**     * check this permission is need to request     *     * @param context         context     * @param permissionArray permissionArray     * @return     */    public static String[] getNeededPermission(Context context, String[] permissionArray) {        if (context == null || permissionArray == null || permissionArray.length == 0) {            return new String[]{};        }        List<String> permissionList = new ArrayList<>();        for (int i = 0; i < permissionArray.length; i++) {            if (CheckPermissionUtils.isNeedAddPermission(context, permissionArray[i])) {                permissionList.add(permissionArray[i]);            }        }        return permissionList.toArray(new String[permissionList.size()]);    }    /**     * check permission is need ?     *     * @return true: need permission  false: don't need permission     */    public static boolean isNeedAddPermission(Context context, String permission) {        return ContextCompat.checkSelfPermission(context, permission) != PackageManager.PERMISSION_GRANTED;    }    /**     * check permission and show setting dialog for user     *     * @param getPermissionListener getPermissionListener     * @param context               context     * @param permissions           permissions     * @param grantResults          grantResults     */    public static void checkPermissionResult(OnHasGetPermissionListener getPermissionListener, Context context            , String[] permissions, int[] grantResults) {        if (context == null || permissions == null || grantResults == null || getPermissionListener == null) {            UtilsTools.Log_e(TAG, "context=" + context + "\n"                    + "permissions=" + Arrays.toString(permissions) + "\n"                    + "grantResults=" + Arrays.toString(grantResults));            return;        }        UtilsTools.Log_e(TAG, "permissions=" + Arrays.toString(permissions) + ",grantResults=" + Arrays.toString(grantResults));        // save the request permission          List<PermissionInfo> list = new ArrayList<>();//Your  permission list          if (grantResults.length <= 0) {            return;        }        // check permission request result          for (int i = 0; i < permissions.length; i++) {            if (grantResults[i] != PackageManager.PERMISSION_GRANTED) {                PermissionInfo info = null;                try {                    info = context.getPackageManager().getPermissionInfo(permissions[i], 0);                } catch (PackageManager.NameNotFoundException e) {                    e.printStackTrace();                }                if (info != null) {                    list.add(info);                }            }        }        // is we has all permission          if (list.size() == 0) {            UtilsTools.Log_e(TAG, "checkPermissionResult onSuccess");            getPermissionListener.onSuccess();        } else {            getPermissionListener.onFail();            // show the dialog for user to setting              UtilsTools.Log_e(TAG, "checkPermissionResult onFail");        }    }    public interface OnHasGetPermissionListener {        void onSuccess();        void onFail();    }}

public void requestPermissiontest() {          // you needer permissions          String[] permissions = {Manifest.permission.READ_PHONE_STATE, Manifest.permission.WRITE_EXTERNAL_STORAGE, Manifest.permission.RECORD_AUDIO};        // check it is needed        permissions = CheckPermissionUtils.getNeededPermission(this, permissions);        // requestPermissions          if (permissions.length > 0) {            requestPermissions(permissions, REQUEST_CODE_TEST);          }      }    public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) {            switch (requestCode) {              case REQUEST_CODE_TEST:                  if (grantResults.length > 0) {                      return;                  }                    if (!CheckPermissionUtils.isNeedAddPermission(this, Manifest.permission.READ_PHONE_STATE)) {                      // do something                      Toast.makeText(this, "申请权限成功:" + Manifest.permission.READ_PHONE_STATE, Toast.LENGTH_LONG).show();                  }                  if (!CheckPermissionUtils.isNeedAddPermission(this, Manifest.permission.WRITE_EXTERNAL_STORAGE)) {                      // do something                      Toast.makeText(this, "申请权限成功:" + Manifest.permission.WRITE_EXTERNAL_STORAGE, Toast.LENGTH_LONG).show();                  }                    break;            }            super.onRequestPermissionsResult(requestCode, permissions, grantResults);      } 

原创粉丝点击