我希望我的应用在重新启动设备时加载BroadcastReceiver AutoStartOnBoot。
清单
<receiver
android:name=".AutoStartOnBoot"
android:enabled="true"
android:exported="true"
android:permission="android.permission.RECEIVE_BOOT_COMPLETED" >
<intent-filter>
<action android:name="android.intent.action.BOOT_COMPLETED" />
<action android:name="android.intent.action.QUICKBOOT_POWERON" />
<category android:name="android.intent.category.DEFAULT" />
</intent-filter>
</receiver>
我有权限设置
<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" />
答案 0 :(得分:3)
修改强>
从你的前两点
1.I uninstall and install the app. Which means that all existing settings are deleted. I then power down the phone. And power it back up, the Broadcast receiver is never called.
2.I now, power down the device one more time and power it up again. Yet, broadcast receiver is not called.
为什么它不起作用?
这里你刚刚安装了应用程序但没有启动。在Android首次启动后,只有所有的清单数据都被注册,所有接收器都工作。但在你的第三种情况下它的工作因为你启动了应用程序所以这里所有的接收器都被注册。
有关详情,请点击Broadcast Receiver not working immediately after package installation
您必须在清单文件
中的<application>
标记之外添加此权限
而不是
<android:permission="android.permission.RECEIVE_BOOT_COMPLETED" >
像
一样添加<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" />
答案 1 :(得分:1)
您描述的行为完全正常。在清单注册的接收器工作之前,需要使用显式Intent
启动其中一个组件。通常情况下,用户点击主屏幕启动器图标。
有关详情,请参阅the Android 3.1 release notes。
答案 2 :(得分:1)