启动完成后,我启动了一个在模拟器上运行完美的服务,但是当我在Android手机上运行时,广播接收器并没有开始服务。 Infact app甚至没有从设备接收启动完成的广播。
这是我的清单文件:
<uses-sdk
android:minSdkVersion="8"
android:targetSdkVersion="14" />
<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" />
<application
android:allowBackup="true"
android:icon="@drawable/ic_logo"
android:label="@string/app_name"
android:theme="@style/AppTheme" >
<receiver
android:name="com.darkrai.smsbasedcontroller.BootReciever"
android:enabled="true"
android:exported="false" >
<intent-filter>
<action android:name="android.intent.action.BOOT_COMPLETED" />
</intent-filter>
</receiver>
<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" />
</application>
这是我的广播接收班。
public class BootReciever extends BroadcastReceiver{
@Override
public void onReceive(Context context, Intent intent) {
context.startService(new Intent(context, UpdateService.class));
Log.d("Boot", "Boot Reciever");
}
答案 0 :(得分:0)
某些设备(主要是HTC)具有称为快速重启的功能,不会触发BOOT_COMPLETED
。相反,他们会触发QUICKBOOT_POWERON
。
所以也要添加此权限<action android:name="android.intent.action.QUICKBOOT_POWERON" />
。
即
<receiver
android:name="com.darkrai.smsbasedcontroller.BootReciever"
android:enabled="true"
android:exported="false" >
<intent-filter>
<action android:name="android.intent.action.BOOT_COMPLETED" />
<action android:name="android.intent.action.QUICKBOOT_POWERON" />
</intent-filter>
</receiver>
答案 1 :(得分:0)
您的BroadcastReceiver
- 对于任何操作 - 在设备上的某些内容使用明确的Intent
启动您的某个组件之前,不会收到任何广播。通常,这是以用户点击启动器中Activity
你的LAUNCHER
的形式出现的。
因此,添加Activity
{{1}},点按它,然后您将收到广播,直到:
答案 2 :(得分:0)
我遇到了同样的问题,而不是您的代码问题或其他问题。 由于miui,我正面临这个问题。 Miui的每个应用程序均禁用了自动启动权限。 如果您还使用miui设备,则可以执行以下选择 当您允许自动启动许可时,您的广播接收器将收到ACTION_BOOT_COMPLETED。 您可以允许自动启动为 设置>已安装的应用程序>您的应用程序>自动启动。