【问题标题】:Catching Incoming call events in flutter+android在flutter + android中捕获来电事件
【发布时间】:2022-08-11 06:38:57
【问题描述】:

我在理解与 Android BroadcastReceiver 相关的一些概念时遇到了一些问题。我的目标是在后台(即应用程序未运行时)收听来电。我也在 Flutter 中编码,所以我创建了一个颤振插件. 已经有一个用于 SMS 的库:telephony。我研究了上述插件的代码。有一个IncomingSmsReceiver 扩展BroadcastReceiver,它接收所有短信并相应地处理它(当应用程序处于后台或未运行时,它会创建一个Isolate 并在该隔离内运行用户指定的回调)。

另一件需要注意的事情是,每当我关闭应用程序时,IncomingSmsReceiver 都会在不同的进程中运行,adb logcat 的以下行很明显

D Zygote  : Forked child process 6287
I ActivityManager: Start proc 6287:org.sudipta.sms_handler_example/u0a525 for broadcast {org.sudipta.sms_handler_example/com.shounakmulay.telephony.sms.IncomingSmsReceiver}

这个子进程是分叉的只要当我关闭我的应用程序时。我不确定这种行为是如何实现的。谁能帮我解决这个问题?我不确定它是否会出现特定的行为,或者它是否在 BroadcastReceiver 本身中存在一些配置。

互联网上有很多关于如何保持广播接收器运行的材料(使用Service)。但是电话插件似乎没有使用任何服务来保持接收器运行。我只是想了解当我关闭我的应用程序时接收器是如何在不同的进程上运行的。

    标签: java android flutter dart telephony


    【解决方案1】:

    你的问题对我来说并不完全清楚。但我认为flutter_call_kit 或flutter_incoming_call 插件可以帮助你

    【讨论】:

    • 感谢您的评论。我想在我的应用程序关闭时(很像 truecaller)获取来电号码并进一步处理它。当应用程序未运行时,我的广播接收器不工作。虽然电话即使应用程序关闭,也能成功接收短信。我发现,每当我关闭我的应用程序时,电话插件的广播接收器就会以某种方式开始在不同的进程中运行。我不确定它是如何做到的。该插件不使用任何Service。
    【解决方案2】:

    你找到任何解决方案了吗?

    这正是我想要的

    【讨论】:

      猜你喜欢
      • 2020-07-20
      • 2018-10-31
      • 1970-01-01
      • 2014-03-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多