在我的应用程序中,我有一个广播接收器,用于捕获发送到手机的消息
<receiver
android:name="com.qmobile.ows.SMS_Receiver"
android:enabled="true"
android:exported="true">
<intent-filter>
<action android:name="android.intent.action.PHONE_STATE" />
<action android:name="android.provider.Telephony.SMS_RECEIVED" />
</intent-filter>
</receiver>
如果我使用活动GUI启动应用程序,则BroadCast Receiver可以正常工作。
我想在没有活动的情况下启动我的应用程序,并且不显示图标应用程序,因此我从活动中删除了以下代码
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
之后,广播接收器不起作用。
请帮我解决这个问题。
这是因为如果应用程序的进程未运行,则Android OS不允许BroadcastReceiver
接收一些重要的广播(android.provider.Telephony.SMS_RECEIVED
必须是其中的一个)。该广播旨在抵制恶意应用程序。如果您正在运行一项活动,则您的过程仍在运行,因此您的接收者可以接收广播。
我认为您可以透明化 activity
并使用startServiceservice
在后台启动,然后完成activity
。当您的服务正在运行时,您的进程仍在运行,因此Android操作系统将允许您接收广播。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句