1

デバイスが起動するたびに特定のタスクをすぐに実行する BroadcastReceiver を作成する必要があります。また、特定のボタンがクリックされると、受信機は起動時に起動を停止する必要があります。誰かがそれを管理するのを手伝ってくれますか?

4

1 に答える 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_COMPLETEDHTC デバイスは、代わりにクイックブートを使用するのが好きです。

質問の 2 番目の部分については、これを達成する方法がいくつかあります。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 );

この方法の永続性については確信が持てません。アプリの 1 つで使用していますが、ブート レシーバー用ではなく、ブート間で保持する必要はありません。そのルートに行きたい場合は、それを試してみる必要があります。

于 2012-12-19T19:15:58.073 に答える