我正在构建一个使用 Kotlin AccessibilityService 的 Flutter 应用程序。
当前问题:
应用程序包含一个 ON/OFF 切换开关。
切换应该控制是否执行 AccessibilityService 的自动化逻辑。
切换状态存储在 SharedPreferences 中使用键 assistant_on。
Flutter 更新值并通过 MethodChannel 将状态发送给 Android。
Flutter:
await prefs.setBool("assistant_on", val);
await platform.invokeMethod( "setServiceState", {"enabled": val}, );
Android (MainActivity):
"setServiceState" ->
val enabled = call.argument<Boolean>("enabled") ?: false
val prefs = getSharedPreferences( "AutoAcceptPrefs", Context.MODE_PRIVATE )
prefs.edit()
.putBoolean("assistant_on", enabled)
.apply()
result.success(true)
AccessibilityService:
val prefs = getSharedPreferences( "AutoAcceptPrefs", Context.MODE_PRIVATE )
val enabled = prefs.getBoolean("assistant_on", false)
Log.d(TAG, "STATUS -> $enabled")
if (!enabled) return // automation logic
观察到的行为:
Flutter UI 中的 ON/OFF 切换状态正确更新。
授予了访问性权限。
授予了通知权限。
AccessibilityService 总是读取 false。
native MethodChannel 回调似乎没有被触发。
问题:
Flutter、SharedPreferences、MethodChannel 通信和运行 AccessibilityService 之间的同步失败最可能的原因是什么?保持服务状态与 Flutter UI 同步的推荐实现模式是什么?
评论 (0)