diff options
author | Maxime Biais <maxime.biais@gmail.com> | 2015-10-22 12:54:35 +0200 |
---|---|---|
committer | Maxime Biais <maxime.biais@gmail.com> | 2015-10-22 15:23:43 +0200 |
commit | bf69b4844b04e2deeb74f72c72db1fa562b61982 (patch) | |
tree | b1c3397c32221bb3a6fcaa1071ba202e26bb7e4a /libs/utils/WordPressUtils/src/main/java/org/wordpress/android/util/PermissionUtils.java | |
parent | 917294e6f66226e64665d1ef6d5cb59357cc6c51 (diff) | |
download | gradle-perf-android-medium-bf69b4844b04e2deeb74f72c72db1fa562b61982.tar.gz |
Moved permission check and request to PermissionUtils
Diffstat (limited to 'libs/utils/WordPressUtils/src/main/java/org/wordpress/android/util/PermissionUtils.java')
-rw-r--r-- | libs/utils/WordPressUtils/src/main/java/org/wordpress/android/util/PermissionUtils.java | 52 |
1 files changed, 52 insertions, 0 deletions
diff --git a/libs/utils/WordPressUtils/src/main/java/org/wordpress/android/util/PermissionUtils.java b/libs/utils/WordPressUtils/src/main/java/org/wordpress/android/util/PermissionUtils.java new file mode 100644 index 000000000..24c4fbdd7 --- /dev/null +++ b/libs/utils/WordPressUtils/src/main/java/org/wordpress/android/util/PermissionUtils.java @@ -0,0 +1,52 @@ +package org.wordpress.android.util; + +import android.Manifest.permission; +import android.app.Activity; +import android.content.pm.PackageManager; +import android.support.v4.app.ActivityCompat; +import android.support.v4.content.ContextCompat; + +import java.util.ArrayList; +import java.util.List; + +public class PermissionUtils { + /** + * Check for permissions, request them if they're not granted. + * + * @return true if permissions are already granted, else request them and return false. + */ + private static boolean checkAndRequestPermissions(Activity activity, int requestCode, String[] permissionList) { + List<String> toRequest = new ArrayList<>(); + for (String permission : permissionList) { + if (ContextCompat.checkSelfPermission(activity, permission) != PackageManager.PERMISSION_GRANTED) { + toRequest.add(permission); + } + } + if (toRequest.size() > 0) { + String[] requestedPermissions = toRequest.toArray(new String[toRequest.size()]); + ActivityCompat.requestPermissions(activity, requestedPermissions, requestCode); + return false; + } + return true; + } + + public static boolean checkAndRequestCameraAndStoragePermissions(Activity activity, int requestCode) { + return checkAndRequestPermissions(activity, requestCode, new String[]{ + permission.WRITE_EXTERNAL_STORAGE, + permission.CAMERA + }); + } + + public static boolean checkAndRequestStoragePermission(Activity activity, int requestCode) { + return checkAndRequestPermissions(activity, requestCode, new String[]{ + permission.WRITE_EXTERNAL_STORAGE + }); + } + + public static boolean checkLocationPermissions(Activity activity, int requestCode) { + return checkAndRequestPermissions(activity, requestCode, new String[]{ + permission.ACCESS_FINE_LOCATION, + permission.ACCESS_COARSE_LOCATION + }); + } +} |