package xyz.klinker.blur.addons;
import android.Manifest;
import android.app.Activity;
import android.app.AlertDialog;
import android.content.Context;
import android.content.DialogInterface;
import android.content.SharedPreferences;
import android.os.Build;
import android.preference.PreferenceManager;
import xyz.klinker.blur.R;
public class PermissionModelUtil {
public static final String[] NECESSARY_PERMISSIONS = new String[] {
Manifest.permission.ACCESS_COARSE_LOCATION,
Manifest.permission.READ_EXTERNAL_STORAGE,
Manifest.permission.WRITE_EXTERNAL_STORAGE,
Manifest.permission.READ_CONTACTS,
Manifest.permission.READ_SMS,
Manifest.permission.READ_PHONE_STATE
};
private static final String PERMISSION_CHECK_PREF = "marshmallow_permission_check";
private Context context;
private SharedPreferences sharedPrefs;
public PermissionModelUtil(Context context) {
this.context = context;
this.sharedPrefs = PreferenceManager.getDefaultSharedPreferences(context);
}
public boolean needPermissionCheck() {
if (Build.VERSION.SDK_INT < Build.VERSION_CODES.M) {
return false;
} else {
return sharedPrefs.getBoolean(PERMISSION_CHECK_PREF, true);
}
}
public void showPermissionExplanationThenAuthorization() {
new AlertDialog.Builder(context)
.setTitle(R.string.permission_check_title)
.setMessage(R.string.permission_check_message)
.setPositiveButton(R.string.ok, new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
requestPermissions();
sharedPrefs.edit().putBoolean(PERMISSION_CHECK_PREF, false).commit();
}
})
.setCancelable(false)
.create().show();
}
private void requestPermissions() {
((Activity)context).requestPermissions(NECESSARY_PERMISSIONS, 1);
}
}