启动接收器在仿真器上工作但不是android实际电话

时间:2014-06-23 18:18:25

标签: android broadcastreceiver

启动完成后,我启动了一个在模拟器上运行完美的服务,但是当我在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");
}

3 个答案:

答案 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。 您可以允许自动启动为 设置>已安装的应用程序>您的应用程序>自动启动。