启动应用程序没有活动,我的广播接收器无法工作

Cau*_*ien 5 android broadcastreceiver

在我的应用程序中,我有一个广播接收器用于捕获发送到我手机的消息

<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>
Run Code Online (Sandbox Code Playgroud)

如果我使用活动GUI启动应用程序,则BroadCast Receiver可正常工作.

我想在没有活动的情况下启动我的应用程序并且不显示图标应用程序,因此我从我的活动中删除了以下代码

 <intent-filter>
                  <action android:name="android.intent.action.MAIN" />
              <category android:name="android.intent.category.LAUNCHER" />
 </intent-filter>
Run Code Online (Sandbox Code Playgroud)

之后,广播接收器不起作用.

请帮我解决这个问题.

小智 4

这是因为如果 app\xc2\xb4s 进程不存在,Android 操作系统不允许 BroadcastReceiver接收一些重要的广播(android.provider.Telephony.SMS_RECEIVED必须是其中之一)。它是为了对抗邪恶的应用程序而设计的。如果您正在运行某个活动,则您的进程处于活动状态,因此您的接收器可以接收广播。

\n\n

我认为你可以做一个透明的 activity并使用startService在后台启动一个service,然后完成。activity当你的服务正在运行时,你的进程是活动的,所以Android操作系统会让你接收广播。

\n

  • 这不是真的!即使应用程序不“活动”,广播也可以接收此消息。出现此问题的原因是,从 android 3.1 及更高版本开始,所有广播都要求用户至少运行您的应用程序一次才能工作。这是为了防止恶意软件。 (6认同)