デバイスが起動するたびに特定のタスクをすぐに実行する BroadcastReceiver を作成する必要があります。また、特定のボタンがクリックされると、受信機は起動時に起動を停止する必要があります。誰かがそれを管理するのを手伝ってくれますか?
質問する
906 次
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_COMPLETED
HTC デバイスは、代わりにクイックブートを使用するのが好きです。
質問の 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 に答える