簡體   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