package es.usc.citius.servando.calendula.util;
/**
*
*/
import android.app.Activity;
import android.content.Intent;
import android.content.pm.PackageManager;
import android.net.Uri;
import android.os.Build;
import android.preference.PreferenceManager;
import android.provider.Settings;
import android.support.v4.app.Fragment;
/**
* Android Permission Utility class. A collection of static convenience methods
* for checking if Android Runtime permissions are required.
*
* https://gist.github.com/mtsahakis/bd54dc595f8cf170eb1bce17f31722b5
*/
public class PermissionUtils {
public static boolean useRunTimePermissions() {
return Build.VERSION.SDK_INT > Build.VERSION_CODES.LOLLIPOP_MR1;
}
public static boolean hasPermission(Activity activity, String permission) {
if (useRunTimePermissions()) {
return activity.checkSelfPermission(permission) == PackageManager.PERMISSION_GRANTED;
}
return true;
}
public static void requestPermissions(Activity activity, String[] permission, int requestCode) {
if (useRunTimePermissions()) {
activity.requestPermissions(permission, requestCode);
}
}
public static void requestPermissions(Fragment fragment, String[] permission, int requestCode) {
if (useRunTimePermissions()) {
fragment.requestPermissions(permission, requestCode);
}
}
public static boolean shouldShowRational(Activity activity, String permission) {
if (useRunTimePermissions()) {
return activity.shouldShowRequestPermissionRationale(permission);
}
return false;
}
public static boolean shouldAskForPermission(Activity activity, String permission) {
if (useRunTimePermissions()) {
return !hasPermission(activity, permission) &&
(!hasAskedForPermission(activity, permission) ||
shouldShowRational(activity, permission));
}
return false;
}
public static void goToAppSettings(Activity activity) {
Intent intent = new Intent(Settings.ACTION_APPLICATION_DETAILS_SETTINGS,
Uri.fromParts("package", activity.getPackageName(), null));
intent.addCategory(Intent.CATEGORY_DEFAULT);
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
activity.startActivity(intent);
}
public static boolean hasAskedForPermission(Activity activity, String permission) {
return PreferenceManager
.getDefaultSharedPreferences(activity)
.getBoolean("asked-for"+permission, false);
}
public static void markedPermissionAsAsked(Activity activity, String permission) {
PreferenceManager
.getDefaultSharedPreferences(activity)
.edit()
.putBoolean("asked-for"+permission, true)
.commit();
}
}