aboutsummaryrefslogtreecommitdiff
path: root/libs/utils/WordPressUtils/src/main/java/org/wordpress/android/util/PermissionUtils.java
diff options
context:
space:
mode:
authorMaxime Biais <maxime.biais@gmail.com>2015-10-22 12:54:35 +0200
committerMaxime Biais <maxime.biais@gmail.com>2015-10-22 15:23:43 +0200
commitbf69b4844b04e2deeb74f72c72db1fa562b61982 (patch)
treeb1c3397c32221bb3a6fcaa1071ba202e26bb7e4a /libs/utils/WordPressUtils/src/main/java/org/wordpress/android/util/PermissionUtils.java
parent917294e6f66226e64665d1ef6d5cb59357cc6c51 (diff)
downloadgradle-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.java52
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
+ });
+ }
+}