我需要创建一个 BroadcastReceiver,它在每次设备启动时立即执行某些任务。此外,当单击某个按钮时,接收器应在启动时停止启动。有人可以帮我管理吗?
问问题
906 次
1 回答
4
您需要解决问题的第一部分就是BroadcastReceiver
为它制作一个并在您的清单中将其声明为:
<receiver android:name=".MyBootReceiver"
android:enabled="true"
>
<intent-filter>
<action android:name="android.intent.action.BOOT_COMPLETED" />
<action android:name="android.intent.action.QUICKBOOT_POWERON" />
</intent-filter>
</receiver>
QUICKBOOT_POWERON
对于某些不发送BOOT_COMPLETED
广播的设备,这是必需的。HTC 设备喜欢使用快速启动设备。
对于您问题的第二部分,您可以通过几种不同的方式来完成此操作。您可以简单地设置一个值,SharedPreferences
让您的接收器在每次触发时都会检查,如果值指示,则立即退出。
您还可以在代码中禁用接收器:
getPackageManager().setComponentEnabledSetting(
new ComponentName( this, MyBootReceiver.class ),
PackageManager.COMPONENT_ENABLED_STATE_DISABLED,
PackageManager.DONT_KILL_APP );
您可以使用相同的方法启用它:
getPackageManager().setComponentEnabledSetting(
new ComponentName( this, MyBootReceiver.class ),
PackageManager.COMPONENT_ENABLED_STATE_ENABLED,
PackageManager.DONT_KILL_APP );
我不确定这种方法的持久性。我在我的一个应用程序中使用它,但它不是用于引导接收器,并且它不必在引导过程中持续存在。如果你想走那条路,你将不得不尝试它。
于 2012-12-19T19:15:58.073 回答