首页 > 解决方案 > 启动接收器在模拟器中不起作用

问题描述

更清楚地说,我指的是接收器对 android.intent.action.BOOT_COMPLETED 的反应。

我已经成功地测试了使用 API 23 在物理设备中工作的接收器。

但是,另一方面,我什至无法在模拟器上运行它,目前,版本 22 和 24,它甚至看起来都没有到达接收器的 OnReceive,接收器只是被忽略了。

是模拟器的一些限制不允许启动这些类型的接收器吗?如果是这种情况,我至少可以假设即使在模拟器中不起作用它也会在物理设备上触发?(出于测试目的,我可以从其他地方启动接收器,因此只要该条件适用,它就不会太介意)。

也可能是接收器被声明为这样一种方式,它在这个版本上不起作用,这就是我声明接收器的方式:

 <receiver
        android:name="com.applications.-----.--------.NoCoverageAndSpaceFullReceiver"
        android:label="StartMyServiceAtBootReceiver">
        <intent-filter>
            <action android:name="android.net.conn.CONNECTIVITY_CHANGE" />
            <action android:name="android.net.conn.ACTION_TIMEZONE_CHANGED" />
            <action android:name="android.net.conn.ACTION_TIME_CHANGED" />
            <action android:name="android.intent.action.BOOT_COMPLETED" />

        </intent-filter>
    </receiver>

我认为没有什么可以避免接收器工作,但以防万一,我把它放了。

PD:我已经将模拟器设置为冷启动,所以问题不在于那个。

标签: androidandroid-emulatorreceiver

解决方案


如果您没有冷启动模拟器,您可能还应该添加以下操作。

<action android:name="android.intent.action.QUICKBOOT_POWERON" />

推荐阅读