繁体   English   中英

android注册永久广播接收器

[英]android register a permanent Broadcast Receiver

我需要创建一个BroadcastReceiver,每次设备启动时立即执行某些任务。 同样,当单击某个按钮时,接收器应在启动时停止启动。 有人可以帮我解决这个问题吗?

解决问题的第一部分所需要做的就是为其创建一个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设备喜欢使用quickboot之一。

对于问题的第二部分,您可以通过几种不同的方法来完成此任务。 您可以简单地在接收者每次触发时在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 );

我不确定这种方法的持久性。 我在我的一个应用程序中使用了它,但是它不是用于启动接收器的,它不必在启动时也可以持久。 如果要走那条路,就必须尝试一下。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM