【问题标题】:Boot Reciever Working on Emulator but not android actual phone启动接收器在模拟器上工作,但不是 android 实际手机
【发布时间】:2014-06-23 18:18:25
【问题描述】:

在启动完成时,我正在启动一个在模拟器上完美运行的服务,但是当我在 android 手机上运行它时,广播接收器不会启动服务。 Infact 应用甚至没有从设备接收启动完成广播。

这是我的清单文件:

<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");
}

【问题讨论】:

    标签: android broadcastreceiver


    【解决方案1】:

    您的BroadcastReceiver(对于任何操作)将不会收到任何广播,直到设备上的某些内容使用明确的Intent 来启动您的组件之一。通常,这以用户在启动器中点击您的Activity 的形式出现。

    所以,添加一个LAUNCHERActivity,点击它,然后你会收到广播,直到:

    • 用户强制阻止您(通常通过“设置”应用),或
    • 用户卸载您的应用

    【讨论】:

    • 但是如果我希望我的设备在启动完成后立即启动服务怎么办。我必须在上面的代码中进行 Wt 修改。
    • @user3768061:我已经回答过了。添加LAUNCHER 活动。用户启动它后,您的接收器将一直工作,直到用户强制停止或卸载您。在用户启动活动之前,您的接收器将无法工作。
    【解决方案2】:

    某些设备(主要是 HTC)具有称为快速重启的功能,它不会触发 BOOT_COMPLETED。相反,它们会触发QUICKBOOT_POWERON

    所以也添加此权限&lt;action android:name="android.intent.action.QUICKBOOT_POWERON" /&gt;。 即

    <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>
    

    【讨论】:

      【解决方案3】:

      我遇到了同样的问题,不是您的代码问题或其他问题。 由于miui,我遇到了这个问题。 Miui 禁用了每个应用程序的自动启动权限。 如果您也在使用 miui 设备,您可以执行以下选项 当您允许自动启动许可时,您的广播接收器将收到 ACTION_BOOT_COMPLETED。 您可以允许自动启动为 设置>已安装的应用>你的应用>自动启动。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2014-07-22
        • 2014-12-16
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2019-02-08
        相关资源
        最近更新 更多