我正在写一个小应用程序来记录传出的电话。
它是基于广播意图的行动、新的行动、传出的通话。
我在清单中注册了一个接收者,当我的应用程序进程处于活动状态时,它可以正常工作。
但是,如果我重新启动设备,或者进程在后台被终止,并且没有重新启动进程,接收器将无法工作。
应用程序请求了必要的权限:
<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手机上,当你切换到摄像头应用程序并返回时,几乎所有第三方应用程序都会被删除。
我知道有一些方法可以让你的过程在幕后持续下去,但我不想这样。我只是想要一个干净的实现使用这个广播接收器。
任何想法都很感激。