@@ -13,7 +13,6 @@ import com.fluttercandies.photo_manager.util.ResultHandler
1313
1414@RequiresApi(34 )
1515class PermissionDelegate34 : PermissionDelegate () {
16-
1716 companion object {
1817 private const val mediaVideo = Manifest .permission.READ_MEDIA_VIDEO
1918 private const val mediaImage = Manifest .permission.READ_MEDIA_IMAGES
@@ -32,55 +31,39 @@ class PermissionDelegate34 : PermissionDelegate() {
3231 requestType : Int ,
3332 mediaLocation : Boolean
3433 ) {
35- if (havePermissions(context, requestType) && (! mediaLocation || haveMediaLocation(context))) {
34+ if (havePermissions(
35+ context,
36+ requestType
37+ ) && (! mediaLocation || haveMediaLocation(context))
38+ ) {
3639 permissionsUtils.permissionsListener?.onGranted(mutableListOf ())
3740 return
3841 }
3942
40- LogUtils .info(" requestPermission" )
41- var havePermission = true
43+ val permissions = mutableListOf<String >()
4244
4345 val containsImage = RequestTypeUtils .containsImage(requestType)
4446 val containsVideo = RequestTypeUtils .containsVideo(requestType)
4547 val containsAudio = RequestTypeUtils .containsAudio(requestType)
4648
47- val requiredPermissions = mutableListOf<String >()
48-
49- if (containsVideo || containsImage) {
50- requiredPermissions.add(mediaVisualUserSelected)
51- // check have media visual user selected permission, the permission does not need to be defined in the manifest.
52- val haveMediaVisualUserSelected =
53- havePermissionForUser(context, mediaVisualUserSelected)
54-
55- havePermission = haveMediaVisualUserSelected
49+ if (containsImage || containsVideo) {
50+ permissions.add(mediaImage)
51+ permissions.add(mediaVideo)
52+ permissions.add(mediaVisualUserSelected)
5653
5754 if (mediaLocation) {
58- requiredPermissions.add(mediaLocationPermission)
59- havePermission = havePermission && havePermission(context, mediaLocationPermission)
55+ permissions.add(mediaLocationPermission)
6056 }
61-
62- if (containsVideo) {
63- requiredPermissions.add(mediaVideo)
64- }
65-
66- if (containsImage) {
67- requiredPermissions.add(mediaImage)
68- }
69-
7057 }
7158
7259 if (containsAudio) {
73- requiredPermissions.add(mediaAudio)
74- havePermission = havePermission && havePermission(context, mediaAudio)
60+ permissions.add(mediaAudio)
7561 }
7662
77- LogUtils .info(" Current permissions: $requiredPermissions " )
78- LogUtils .info(" havePermission: $havePermission " )
79-
80- if (havePermission) {
81- permissionsUtils.permissionsListener?.onGranted(requiredPermissions)
63+ if (havePermissions(context, * permissions.toTypedArray())) {
64+ permissionsUtils.permissionsListener?.onGranted(permissions)
8265 } else {
83- requestPermission(permissionsUtils, requiredPermissions )
66+ requestPermission(permissionsUtils, permissions )
8467 }
8568 }
8669
@@ -89,17 +72,20 @@ class PermissionDelegate34 : PermissionDelegate() {
8972 val containsVideo = RequestTypeUtils .containsVideo(requestType)
9073 val containsAudio = RequestTypeUtils .containsAudio(requestType)
9174
92- var result = true
75+ var granted = true
9376
94- if (containsVideo || containsImage) {
95- result = result && havePermission(context, mediaVisualUserSelected)
77+ if (containsImage || containsVideo) {
78+ var hasPermission = havePermission(context, mediaImage)
79+ hasPermission = hasPermission || havePermission(context, mediaVideo)
80+ hasPermission = hasPermission || havePermission(context, mediaVisualUserSelected)
81+ granted = granted && hasPermission
9682 }
9783
9884 if (containsAudio) {
99- result = result && havePermission(context, mediaAudio)
85+ granted = granted && havePermission(context, mediaAudio)
10086 }
10187
102- return result
88+ return granted
10389 }
10490
10591 override fun haveMediaLocation (context : Context ): Boolean {
@@ -132,28 +118,27 @@ class PermissionDelegate34 : PermissionDelegate() {
132118 val needMediaVisualUserSelected =
133119 needToRequestPermissionsList.contains(mediaVisualUserSelected)
134120
135- var result = true
121+ var granted = true
136122
137123 if (needImage || needVideo || needMediaVisualUserSelected) {
138124 val haveVideoOrImagePermission = haveAnyPermissionForUser(
139125 context,
140126 mediaVisualUserSelected, mediaImage, mediaVideo
141127 )
142-
143- result = haveVideoOrImagePermission
128+ granted = haveVideoOrImagePermission
144129 }
145130
146131 if (needAudio) {
147- result = result && havePermission(context, mediaAudio)
132+ granted = granted && havePermission(context, mediaAudio)
148133 }
149134
150135 if (needMediaLocation) {
151- result = result && havePermissionForUser(context, mediaLocationPermission)
136+ granted = granted && havePermissionForUser(context, mediaLocationPermission)
152137 }
153138
154139 val listener = permissionsUtils.permissionsListener ? : return
155140
156- if (result ) {
141+ if (granted ) {
157142 listener.onGranted(needToRequestPermissionsList)
158143 } else {
159144 listener.onDenied(
@@ -172,21 +157,11 @@ class PermissionDelegate34 : PermissionDelegate() {
172157 ) {
173158 this .resultHandler = resultHandler
174159
175- val containsImage = RequestTypeUtils .containsImage(type)
176- val containsVideo = RequestTypeUtils .containsVideo(type)
177-
178160 val permissions = mutableListOf<String >()
179-
180- if (containsVideo || containsImage) {
181- permissions.add(mediaVisualUserSelected)
182- }
183-
184- if (containsVideo) {
185- permissions.add(mediaVideo)
186- }
187-
188- if (containsImage) {
161+ if (RequestTypeUtils .containsImage(type) || RequestTypeUtils .containsVideo(type)) {
189162 permissions.add(mediaImage)
163+ permissions.add(mediaVideo)
164+ permissions.add(mediaVisualUserSelected)
190165 }
191166
192167 requestPermission(permissionsUtils, permissions, limitedRequestCode)
@@ -219,8 +194,8 @@ class PermissionDelegate34 : PermissionDelegate() {
219194 }
220195
221196 PermissionResult .Limited -> result = PermissionResult .Limited
222- else -> {
223- }
197+
198+ else -> { }
224199 }
225200 }
226201
0 commit comments