@@ -20,7 +20,6 @@ import javax.lang.model.element.Modifier
20
20
public abstract class BaseProcessorUnit : ProcessorUnit {
21
21
22
22
protected val PERMISSION_UTILS = ClassName .get(" permissions.dispatcher" , " PermissionUtils" )
23
-
24
23
private val MANIFEST_WRITE_SETTING = " android.permission.WRITE_SETTINGS"
25
24
private val MANIFEST_SYSTEM_ALERT_WINDOW = " android.permission.SYSTEM_ALERT_WINDOW"
26
25
private val ADD_WITH_CHECK_BODY_MAP = hashMapOf(MANIFEST_SYSTEM_ALERT_WINDOW to SystemAlertWindowHelper (), MANIFEST_WRITE_SETTING to WriteSettingsHelper ())
@@ -268,6 +267,18 @@ public abstract class BaseProcessorUnit : ProcessorUnit {
268
267
}
269
268
270
269
private fun addResultCaseBody (builder : MethodSpec .Builder , needsMethod : ExecutableElement , rpe : RuntimePermissionsElement , targetParam : String , grantResultsParam : String ) {
270
+
271
+ // just workaround, see https://github.com/hotchemi/PermissionsDispatcher/issues/45
272
+ val onDenied: ExecutableElement ? = rpe.findOnDeniedForNeeds(needsMethod)
273
+ val hasDenied = onDenied != null
274
+ if (hasDenied) {
275
+ builder.beginControlFlow(" if (!\$ T.hasSelfPermissions(\$ N, \$ N))" ,
276
+ PERMISSION_UTILS , getActivityName(targetParam), permissionFieldName(needsMethod))
277
+ builder.addStatement(" \$ N.\$ N()" , targetParam, onDenied!! .simpleString())
278
+ builder.addStatement(" return" )
279
+ builder.endControlFlow()
280
+ }
281
+
271
282
val needsPermissionParameter = needsMethod.getAnnotation(NeedsPermission ::class .java).value[0 ]
272
283
273
284
// Add the conditional for "permission verified"
@@ -285,8 +296,6 @@ public abstract class BaseProcessorUnit : ProcessorUnit {
285
296
}
286
297
287
298
// Add the conditional for "permission denied" and/or "never ask again", if present
288
- val onDenied: ExecutableElement ? = rpe.findOnDeniedForNeeds(needsMethod)
289
- val hasDenied = onDenied != null
290
299
val onNeverAsk: ExecutableElement ? = rpe.findOnNeverAskForNeeds(needsMethod)
291
300
val hasNeverAsk = onNeverAsk != null
292
301
0 commit comments