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

标签 android broadcastreceiver

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

最佳答案

解决问题的第一部分所需要做的就是为其制作一个BroadcastReceiver 并在您的Manifest 中将其声明为:

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

我不确定这种方法的持久性。我在我的一个应用程序中使用它,但它不适用于引导接收器,并且它不必跨引导持续存在。如果你想走那条路,你就必须用它来试验。

关于android注册一个永久广播接收器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13959410/

相关文章:

Android:如果从数据库中删除超过 1 行,则具有多项选择 ListView 的应用程序会中断

Android - 像表格行一样对齐 TextView

java - 获取一个 BroadcastReceiver 使其生命周期比 Activity 长

android - 应用程序启动前未收到 INSTALL_REFERRER

android - BroadcastReceiver 多久监听一次 Intents

android - 如何使用manageQuery按降序排列文件名

java - 如何使用 Proguard 生成的 mapping.txt 对 jar 文件进行反混淆?

java - Android 将字符串写入广播接收器中的文件

android - Activity 监听器 - 谷歌云消息传递 - BroadcastReceiver

Android - 如何从 ActionBar 中删除应用程序名称