如何从Android BroadcastReceiver开始Flutter处理

问题描述 投票:0回答:1

要求

我想实现一个Flutter应用程序,它是:

  1. 在 Android 上由广播操作
    ACL_CONNECTED
    触发,然后
  2. 在 Dart (Flutter) 中处理有关已连接设备的信息并基于结果
  3. 使用通知启动前台服务,该服务将继续处理,并且如果点击通知则可以打开 UI

想法

  1. application/receiver
    标签添加到
    AndroidManifest.xml
  2. 实现
    BroadcastReceiver/onReceive
    ,将处理交给Dart/Flutter
  3. 在 Dart 中继续处理

注意:使用静态 BroadcastReveiver 将允许跳过启动应用程序并使其在后台运行。

挑战

目前还不清楚如何将Android的处理交给Dart/Flutter。如果应用程序正在运行,则可以使用 Android 端的 平台通道

MethodChannel.invokeMethod
,并通过 Flutter 端的
MethodChannel.setMethodCallHandler
捕获它。

在静态 BroadcastReviever 的情况下,Android 或 Flutter 代码的其他部分都不会被初始化,因此看起来

MethodChannel.invokeMethod
最终会陷入空白。

问题

如何从Android BroadcastReceiver开始Flutter处理?

类似问题

不幸的是没有明确的答案:

可能的替代解决方案

  • 动态广播接收器
    也许应用程序可以在Android启动后启动并动态注册
    BroadcastReviever
    ,并且Dart中的回调将被初始化,但我们也应该确保应用程序不会被系统杀死。
  • 从静态 BroadcastReceiver 启动主 Flutter 应用程序
    可传递特殊参数。如果在应用程序启动时收到此特殊参数 - 使用替代逻辑 - 进行所需的处理并最小化或关闭应用程序,甚至不显示 UI 以避免用户分心。
flutter broadcastreceiver background-process
1个回答
0
投票

@mspnr 您可以分享一些解决方案的代码吗?

© www.soinside.com 2019 - 2024. All rights reserved.