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