@@ -15,6 +15,7 @@ import io.flutter.plugin.common.BinaryMessenger
1515import io.flutter.plugin.common.MethodCall
1616import io.flutter.plugin.common.MethodChannel
1717import io.flutter.plugin.common.PluginRegistry
18+ import java.util.UUID
1819import kotlin.Exception
1920
2021/* * MethodCallHandlerImpl */
@@ -25,7 +26,8 @@ class MethodCallHandlerImpl(private val context: Context, private val provider:
2526 private lateinit var channel: MethodChannel
2627
2728 private var activity: Activity ? = null
28- private var resultCallbacks: MutableMap <Int , MethodChannel .Result ?> = mutableMapOf ()
29+ private var methodCodes: MutableMap <Int , Int > = mutableMapOf ()
30+ private var methodResults: MutableMap <Int , MethodChannel .Result > = mutableMapOf ()
2931
3032 override fun onMethodCall (call : MethodCall , result : MethodChannel .Result ) {
3133 val args = call.arguments
@@ -109,27 +111,30 @@ class MethodCallHandlerImpl(private val context: Context, private val provider:
109111
110112 " openIgnoreBatteryOptimizationSettings" -> {
111113 checkActivityNull().let {
112- val reqCode = RequestCode .OPEN_IGNORE_BATTERY_OPTIMIZATION_SETTINGS
113- resultCallbacks[reqCode] = result
114- PluginUtils .openIgnoreBatteryOptimizationSettings(it, reqCode)
114+ val requestCode = UUID .randomUUID().hashCode() and 0xFFFF
115+ methodCodes[requestCode] = RequestCode .OPEN_IGNORE_BATTERY_OPTIMIZATION_SETTINGS
116+ methodResults[requestCode] = result
117+ PluginUtils .openIgnoreBatteryOptimizationSettings(it, requestCode)
115118 }
116119 }
117120
118121 " requestIgnoreBatteryOptimization" -> {
119122 checkActivityNull().let {
120- val reqCode = RequestCode .REQUEST_IGNORE_BATTERY_OPTIMIZATION
121- resultCallbacks[reqCode] = result
122- PluginUtils .requestIgnoreBatteryOptimization(it, reqCode)
123+ val requestCode = UUID .randomUUID().hashCode() and 0xFFFF
124+ methodCodes[requestCode] = RequestCode .REQUEST_IGNORE_BATTERY_OPTIMIZATION
125+ methodResults[requestCode] = result
126+ PluginUtils .requestIgnoreBatteryOptimization(it, requestCode)
123127 }
124128 }
125129
126130 " canDrawOverlays" -> result.success(PluginUtils .canDrawOverlays(context))
127131
128132 " openSystemAlertWindowSettings" -> {
129133 checkActivityNull().let {
130- val reqCode = RequestCode .OPEN_SYSTEM_ALERT_WINDOW_SETTINGS
131- resultCallbacks[reqCode] = result
132- PluginUtils .openSystemAlertWindowSettings(it, reqCode)
134+ val requestCode = UUID .randomUUID().hashCode() and 0xFFFF
135+ methodCodes[requestCode] = RequestCode .OPEN_SYSTEM_ALERT_WINDOW_SETTINGS
136+ methodResults[requestCode] = result
137+ PluginUtils .openSystemAlertWindowSettings(it, requestCode)
133138 }
134139 }
135140
@@ -138,9 +143,10 @@ class MethodCallHandlerImpl(private val context: Context, private val provider:
138143
139144 " openAlarmsAndRemindersSettings" -> {
140145 checkActivityNull().let {
141- val reqCode = RequestCode .OPEN_ALARMS_AND_REMINDER_SETTINGS
142- resultCallbacks[reqCode] = result
143- PluginUtils .openAlarmsAndRemindersSettings(it, reqCode)
146+ val requestCode = UUID .randomUUID().hashCode() and 0xFFFF
147+ methodCodes[requestCode] = RequestCode .OPEN_ALARMS_AND_REMINDER_SETTINGS
148+ methodResults[requestCode] = result
149+ PluginUtils .openAlarmsAndRemindersSettings(it, requestCode)
144150 }
145151 }
146152
@@ -152,19 +158,25 @@ class MethodCallHandlerImpl(private val context: Context, private val provider:
152158 }
153159
154160 override fun onActivityResult (requestCode : Int , resultCode : Int , data : Intent ? ): Boolean {
155- val resultCallback = resultCallbacks[requestCode] ? : return true
161+ val methodCode = methodCodes[requestCode]
162+ val methodResult = methodResults[requestCode]
163+ methodCodes.remove(requestCode)
164+ methodResults.remove(requestCode)
156165
157- when (requestCode) {
166+ if (methodCode == null || methodResult == null ) {
167+ return true
168+ }
169+
170+ when (methodCode) {
158171 RequestCode .OPEN_IGNORE_BATTERY_OPTIMIZATION_SETTINGS ->
159- resultCallback .success(PluginUtils .isIgnoringBatteryOptimizations(context))
172+ methodResult .success(PluginUtils .isIgnoringBatteryOptimizations(context))
160173 RequestCode .REQUEST_IGNORE_BATTERY_OPTIMIZATION ->
161- resultCallback .success(PluginUtils .isIgnoringBatteryOptimizations(context))
174+ methodResult .success(PluginUtils .isIgnoringBatteryOptimizations(context))
162175 RequestCode .OPEN_SYSTEM_ALERT_WINDOW_SETTINGS ->
163- resultCallback .success(PluginUtils .canDrawOverlays(context))
176+ methodResult .success(PluginUtils .canDrawOverlays(context))
164177 RequestCode .OPEN_ALARMS_AND_REMINDER_SETTINGS ->
165- resultCallback .success(PluginUtils .canScheduleExactAlarms(context))
178+ methodResult .success(PluginUtils .canScheduleExactAlarms(context))
166179 }
167-
168180 return true
169181 }
170182
0 commit comments