代码之家  ›  专栏  ›  技术社区  ›  Robin

如果应用程序进程处于非活动状态,Android广播接收器的操作_新建_传出_呼叫不工作

  •  0
  • Robin  · 技术社区  · 6 年前

    我正在写一个小应用程序来记录传出的电话。 它是基于广播意图的行动、新的行动、传出的通话。 我在清单中注册了一个接收者,当我的应用程序进程处于活动状态时,它可以正常工作。 但是,如果我重新启动设备,或者进程在后台被终止,并且没有重新启动进程,接收器将无法工作。

    应用程序请求了必要的权限: <uses-permission android:name="android.permission.PROCESS_OUTGOING_CALLS" /> <uses-permission android:name="android.permission.READ_PHONE_STATE" /> 这些都是理所当然的。

    接收方注册如下: <receiver android:name=".OutgoingCallReceiver" > <intent-filter> <action android:name="android.intent.action.NEW_OUTGOING_CALL" /> <category android:name="android.intent.category.DEFAULT" /> </intent-filter> </receiver> 我还检查了ACTION_NEW_OUTGOING_CALL是否在 "Implicit Broadcast Exceptions" 列表,这意味着清单注册接收者仍然可以被调用。 然而,当我启动应用程序进程时,它可以正常工作,但如果应用程序进程未激活,则无法调用接收器。

    我看到了一些 similar question here ,但这不是我的情况。

    自从安卓派(Android Pie)问世以来,该系统在扼杀后台进程方面变得非常激进。尤其是在谷歌Pixel3手机上,当你切换到摄像头应用程序并返回时,几乎所有第三方应用程序都会被删除。

    我知道有一些方法可以让你的过程在幕后持续下去,但我不想这样。我只是想要一个干净的实现使用这个广播接收器。

    任何想法都很感激。

    0 回复  |  直到 6 年前