@@ -30,15 +30,20 @@ object PermissionUtils {
30
30
}
31
31
32
32
fun requestPermissions (activity : Activity , permissions : List <String >, requestCode : Int ) {
33
- if (permissions.isEmpty()) {
33
+ val notGrantedPermissions = permissions.filterNot { hasPermission(activity, it) }
34
+ if (notGrantedPermissions.isEmpty()) {
34
35
activity.onRequestPermissionsResult(
35
36
requestCode,
36
37
permissions.toTypedArray(),
37
- intArrayOf()
38
+ intArrayOf(PackageManager . PERMISSION_GRANTED )
38
39
)
39
40
return
40
41
}
41
- ActivityCompat .requestPermissions(activity, permissions.toTypedArray(), requestCode)
42
+ ActivityCompat .requestPermissions(
43
+ activity,
44
+ notGrantedPermissions.toTypedArray(),
45
+ requestCode
46
+ )
42
47
}
43
48
44
49
fun requestPermissionsWithRationale (
@@ -49,6 +54,15 @@ object PermissionUtils {
49
54
buttonGrant : String ,
50
55
buttonDeny : String
51
56
) {
57
+ val notGrantedPermissions = permissions.filterNot { hasPermission(activity, it) }
58
+ if (notGrantedPermissions.isEmpty()) {
59
+ activity.onRequestPermissionsResult(
60
+ requestCode,
61
+ permissions.toTypedArray(),
62
+ intArrayOf(PackageManager .PERMISSION_GRANTED )
63
+ )
64
+ return
65
+ }
52
66
UiUtils .alertWithCancel(
53
67
activity,
54
68
rationale.title,
@@ -57,11 +71,11 @@ object PermissionUtils {
57
71
buttonDeny
58
72
) { cancelled ->
59
73
if (! cancelled) {
60
- requestPermissions(activity, permissions , requestCode)
74
+ requestPermissions(activity, notGrantedPermissions , requestCode)
61
75
} else {
62
76
activity.onRequestPermissionsResult(
63
77
requestCode,
64
- permissions .toTypedArray(),
78
+ notGrantedPermissions .toTypedArray(),
65
79
intArrayOf(PackageManager .PERMISSION_DENIED )
66
80
)
67
81
}
0 commit comments