阅读背景:

Android 6.0权限问题

来源:互联网 

1.工具类

package com.enjoygame.utils;

import static android.support.v4.content.PermissionChecker.checkSelfPermission;
import android.Manifest;
import android.app.Activity;
import android.content.Context;
import android.content.Intent;
import android.content.pm.PackageManager;
import android.net.Uri;
import android.provider.Settings;
import android.support.v4.app.ActivityCompat;
import android.support.v4.app.Fragment;

public class PermissionUtils {
    private static String TAG = "PermissionUtils";

    public static final int PERMISSION_READ_PHONE_STATE = 1;
    public static final int PERMISSION_SYSTEM_ALERT_WINDOW = 24;

    public static String[] permissionReadPhoneState = new String[] {
        Manifest.permission.READ_PHONE_STATE,
    };

    public static String[] permissionSystemAlertWindow = new String[]{
        Manifest.permission.SYSTEM_ALERT_WINDOW
    };

    public static boolean verifyPermissions(int... grantResults) {
        for (int result : grantResults) {
            if (result != PackageManager.PERMISSION_GRANTED) {
                return false;
            }
        }
        return true;
    }

    public static boolean hasSelfPermissions(Context context, String... permissions) {
        for (String permission : permissions) {
            if (checkSelfPermission(context, permission) != PackageManager.PERMISSION_GRANTED) {
                return false;
            }
        }
        return true;
    }

    public static boolean shouldShowRequestPermissionRationale(Activity activity, String... permissions) {
        for (String permission : permissions) {
            if (ActivityCompat.shouldShowRequestPermissionRationale(activity, permission)) {
                return true;
            }
        }
        return false;
    }

    public static boolean shouldShowRequestPermissionRationale(Fragment fragment, String... permissions) {
        for (String permission : permissions) {
            if (fragment.shouldShowRequestPermissionRationale(permission)) {
                return true;
            }
        }
        return false;
    }

    public static void requestPermissionActivity(Activity context, String[] permission, int permissionCode) {
        boolean hasSelfPermission = PermissionUtils.hasSelfPermissions(context, permission);
        if(!hasSelfPermission) {
            if (!Settings.canDrawOverlays(context)) {
                Intent intent = new Intent(Settings.ACTION_MANAGE_OVERLAY_PERMISSION,
                        Uri.parse("package:" + context.getPackageName()));
                context.startActivityForResult(intent, PERMISSION_SYSTEM_ALERT_WINDOW);
            }
        }
    }

    public static void requestPermissionFragment(Activity context, Fragment fragment, String[] permission, int permissionCode) {
        boolean hasSelfPermission = PermissionUtils.hasSelfPermissions(context, permission);
        if(!hasSelfPermission) {
            boolean showRationale = PermissionUtils.shouldShowRequestPermissionRationale(fragment, permission);
            if(!showRationale){
                fragment.requestPermissions(permission, permissionCode);
            }
        }
    }
}
package com.enjoygame.utils;

impo



你的当前访问异常,请进行认证后继续阅读剩余内容。

分享到: