package org.wikipedia.util; import android.Manifest; import android.content.Context; import android.content.pm.PackageManager; import android.support.annotation.NonNull; import android.support.v4.app.ActivityCompat; import android.support.v4.app.Fragment; import android.support.v4.content.ContextCompat; import android.support.v7.app.AppCompatActivity; /** * Common methods for dealing with runtime permissions. */ public final class PermissionUtil { public static boolean isPermitted(@NonNull int[] grantResults) { // If request is cancelled, the result arrays are empty. return grantResults.length > 0 && grantResults[0] == PackageManager.PERMISSION_GRANTED; } public static boolean hasWriteExternalStoragePermission(@NonNull Context context) { return ContextCompat.checkSelfPermission(context, Manifest.permission.WRITE_EXTERNAL_STORAGE) == PackageManager.PERMISSION_GRANTED; } public static void requestWriteStorageRuntimePermissions(Fragment fragment, int requestCode) { fragment.requestPermissions(new String[]{Manifest.permission.WRITE_EXTERNAL_STORAGE}, requestCode); // once permission is granted/denied it will continue with onRequestPermissionsResult } public static void requestWriteStorageRuntimePermissions(AppCompatActivity activity, int requestCode) { ActivityCompat.requestPermissions(activity, new String[]{Manifest.permission.WRITE_EXTERNAL_STORAGE}, requestCode); // once permission is granted/denied it will continue with onRequestPermissionsResult } private PermissionUtil() { } }