package ca.josephroque.bowlingcompanion.utilities; import android.Manifest; import android.app.Activity; import android.app.AlertDialog; import android.content.DialogInterface; import android.support.v4.app.ActivityCompat; import ca.josephroque.bowlingcompanion.R; /** * Created by Joseph Roque on 2015-08-29. Provides methods to prompt users for certain permissions. */ public final class PermissionUtils { /** Identifies output from this class in Logcat. */ @SuppressWarnings("unused") private static final String TAG = "PermissionUtils"; /** Id for permission to write to external storage. */ public static final int REQUEST_EXTERNAL_STORAGE = 0; /** * Prompts user for permission to write to external storage. * * @param activity current activity */ public static void requestExternalStoragePermission(final Activity activity) { if (ActivityCompat.shouldShowRequestPermissionRationale(activity, Manifest.permission.WRITE_EXTERNAL_STORAGE)) { new AlertDialog.Builder(activity) .setMessage(R.string.permission_request_storage) .setPositiveButton(R.string.dialog_okay, new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { dialog.dismiss(); ActivityCompat.requestPermissions(activity, new String[]{Manifest.permission.WRITE_EXTERNAL_STORAGE}, REQUEST_EXTERNAL_STORAGE); } }) .setNegativeButton(R.string.dialog_cancel, new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { dialog.dismiss(); } }) .create() .show(); } else { ActivityCompat.requestPermissions(activity, new String[]{Manifest.permission.WRITE_EXTERNAL_STORAGE}, REQUEST_EXTERNAL_STORAGE); } } /** * Default private constructor. */ private PermissionUtils() { // does nothing } }