-
Notifications
You must be signed in to change notification settings - Fork 1
Expand file tree
/
Copy pathPermissionRequestUseCase.java
More file actions
89 lines (74 loc) · 3.11 KB
/
PermissionRequestUseCase.java
File metadata and controls
89 lines (74 loc) · 3.11 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
import android.app.Activity;
import android.content.pm.PackageManager;
import android.support.v4.app.ActivityCompat;
import android.support.v4.content.ContextCompat;
import java.lang.ref.WeakReference;
import java.util.ArrayList;
import java.util.List;
import static android.Manifest.permission.ACCESS_COARSE_LOCATION;
import static android.Manifest.permission.ACCESS_FINE_LOCATION;
import static android.Manifest.permission.WRITE_EXTERNAL_STORAGE;
import static android.Manifest.permission.CAMERA;
public class PermissionRequestUseCase implements IPermissionRequestUseCase {
public static final int PERMISSION_WRITE_STORAGE_REQUEST_CODE = 101;
public static final int PERMISSION_CAMERA_REQUEST_CODE = 102;
public static final int PERMISSION_LOCATION_REQUEST_CODE = 103;
private final WeakReference<Activity> activityWeakRefence;
public PermissionRequestUseCase(Activity activity) {
this.activityWeakRefence = new WeakReference<>(activity);
}
@Override
public boolean isPermissionGranted(String permission) {
final Activity activity = activityWeakRefence.get();
if (activity != null) {
return ContextCompat.checkSelfPermission(activity, permission) == PackageManager.PERMISSION_GRANTED;
} else {
return false;
}
}
@Override
public void requestPermission(int requestCode, String... permissions) {
final Activity activity = activityWeakRefence.get();
if (activity != null) {
ActivityCompat.requestPermissions(activity, permissions, requestCode);
}
}
@Override
public boolean requestPermissionsIfNeeded(int requestCode, String... permissions) {
List<String> notGrantedPermissions = new ArrayList<>();
for (String permission : permissions) {
if (!isPermissionGranted(permission)) {
notGrantedPermissions.add(permission);
}
}
if (notGrantedPermissions.isEmpty()) {
return false;
} else {
requestPermission(
requestCode,
notGrantedPermissions.toArray(new String[notGrantedPermissions.size()])
);
return true;
}
}
public boolean requestCameraPermission() {
return requestPermissionsIfNeeded(PERMISSION_CAMERA_REQUEST_CODE, CAMERA, WRITE_EXTERNAL_STORAGE);
}
public boolean requestReadExternalStoragePermission() {
return requestPermissionsIfNeeded(PERMISSION_WRITE_STORAGE_REQUEST_CODE, WRITE_EXTERNAL_STORAGE);
}
public boolean requestLocationAccessPermission() {
return requestPermissionsIfNeeded(PERMISSION_LOCATION_REQUEST_CODE, ACCESS_FINE_LOCATION, ACCESS_COARSE_LOCATION);
}
}
//
//use class:
//useCase = new PermissionRequestUseCase(getActivity());
//
//boolean isLocationAvailable = useCase.isPermissionGranted(ACCESS_FINE_LOCATION);
// isLocationAvailable &= useCase.isPermissionGranted(ACCESS_COARSE_LOCATION);
// if (isLocationAvailable) {
// bindLocationService();
// } else {
// useCase.requestLocationAccessPermission();
// }