android注册一个永久的广播接收器

时间:2012-12-19 19:10:06

标签: android broadcastreceiver

我需要创建一个BroadcastReceiver,每次设备启动时都会立即执行某项任务。此外,当单击某个按钮时,接收器应该在启动时停止启动。有人可以帮我管理吗?

1 个答案:

答案 0 :(得分:3)

你需要解决问题的第一部分就是为它做一个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 );

我不确定这种方法的持久性。我在我的一个应用程序中使用它,但它不适用于启动接收器,并且它不必持久穿过靴子。如果你想走这条路,你将不得不尝试它。

相关问题