Skip to content

Commit d421635

Browse files
committed
Adds permission utils for calling via fragments
1 parent 57027fd commit d421635

File tree

1 file changed

+45
-0
lines changed

1 file changed

+45
-0
lines changed

WordPressUtils/src/main/java/org/wordpress/android/util/PermissionUtils.java

Lines changed: 45 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,10 @@
22

33
import android.Manifest.permission;
44
import android.app.Activity;
5+
import android.app.Fragment;
6+
import android.content.Context;
57
import android.content.pm.PackageManager;
8+
import android.support.v13.app.FragmentCompat;
69
import android.support.v4.app.ActivityCompat;
710
import android.support.v4.content.ContextCompat;
811

@@ -30,23 +33,65 @@ private static boolean checkAndRequestPermissions(Activity activity, int request
3033
return true;
3134
}
3235

36+
/**
37+
* Check for permissions, request them if they're not granted.
38+
*
39+
* @return true if permissions are already granted, else request them and return false.
40+
*/
41+
private static boolean checkAndRequestPermissions(Fragment fragment, int requestCode, String[] permissionList) {
42+
List<String> toRequest = new ArrayList<>();
43+
for (String permission : permissionList) {
44+
Context context = fragment.getActivity();
45+
if (context != null && ContextCompat.checkSelfPermission(context, permission) != PackageManager
46+
.PERMISSION_GRANTED) {
47+
toRequest.add(permission);
48+
}
49+
}
50+
if (toRequest.size() > 0) {
51+
String[] requestedPermissions = toRequest.toArray(new String[toRequest.size()]);
52+
FragmentCompat.requestPermissions(fragment, requestedPermissions, requestCode);
53+
return false;
54+
}
55+
return true;
56+
}
57+
3358
public static boolean checkAndRequestCameraAndStoragePermissions(Activity activity, int requestCode) {
3459
return checkAndRequestPermissions(activity, requestCode, new String[]{
3560
permission.WRITE_EXTERNAL_STORAGE,
3661
permission.CAMERA
3762
});
3863
}
3964

65+
public static boolean checkAndRequestCameraAndStoragePermissions(Fragment fragment, int requestCode) {
66+
return checkAndRequestPermissions(fragment, requestCode, new String[]{
67+
permission.WRITE_EXTERNAL_STORAGE,
68+
permission.CAMERA
69+
});
70+
}
71+
4072
public static boolean checkAndRequestStoragePermission(Activity activity, int requestCode) {
4173
return checkAndRequestPermissions(activity, requestCode, new String[]{
4274
permission.WRITE_EXTERNAL_STORAGE
4375
});
4476
}
4577

78+
public static boolean checkAndRequestStoragePermission(Fragment fragment, int requestCode) {
79+
return checkAndRequestPermissions(fragment, requestCode, new String[]{
80+
permission.WRITE_EXTERNAL_STORAGE
81+
});
82+
}
83+
4684
public static boolean checkLocationPermissions(Activity activity, int requestCode) {
4785
return checkAndRequestPermissions(activity, requestCode, new String[]{
4886
permission.ACCESS_FINE_LOCATION,
4987
permission.ACCESS_COARSE_LOCATION
5088
});
5189
}
90+
91+
public static boolean checkLocationPermissions(Fragment fragment, int requestCode) {
92+
return checkAndRequestPermissions(fragment, requestCode, new String[]{
93+
permission.ACCESS_FINE_LOCATION,
94+
permission.ACCESS_COARSE_LOCATION
95+
});
96+
}
5297
}

0 commit comments

Comments
 (0)