2012-05-13 9 views
1

OKですので、検索して検索しましたが、これが可能ではないと宣言する参照を見つけることはできません。基本的に私のアプリで達成したいのは、ユーザがACTION_BOOT_COMPLETEDのために放送受信機を登録または登録解除できるようにすることです。プログラムでACTION_BOOT_COMPLETEDを登録しています

私は以下のコードを使用して登録しようとしましたが、ダイスはありません。それをマニフェストに追加すると、イベントを受け取ることはできますが、それをオフにする方法はありません(私が知ることから)。 ACTION_BOOT_COMPLETEDの受信機を登録し、登録を解除する方法はありますか?

IntentFilter bootFilter = new IntentFilter(Intent.ACTION_BOOT_COMPLETED); 
    mBootCompleted = new BootBroadcastReceiver(); 
    registerReceiver(mBootCompleted, bootFilter); 
+0

このようにしようとしたときに、あなたのマニフェストにそのアクセス許可が含まれていることを確認しましたか? – FoamyGuy

+0

[onBoot Complete with user preference](http://stackoverflow.com/questions/3465287/onboot-complete-as-user-preference) –

+0

@Tim yeah私は許可を持っています MikeIsrael

答えて

4

基本的に私は私のアプリで達成したいものをACTION_BOOT_COMPLETEDのための放送受信機を登録または登録解除するには、ユーザーをできるようにすることです。

ステップ#1:BOOT_COMPLETED放送

ステップ#2のために<intent-filter>とマニフェストに<receiver>を置く:あなたのアプリケーションから必要に応じてかどうかに基づいて、PackageManagersetComponentEnabledSetting()を使用して、コンポーネントを有効または無効にしますあるいは、それは次回の起動

ステップ#3のために必要されるわけではありません。何のステップ#3

ありません

私はそれを私たちを登録してみてください以下のコードを入力しますが、ダイスはありません。

もちろんです。この存在面では、時間は線形に進行し、常に前進する(TARDISをモジュロまたは適切に装備したDeLorean)。表示されたコードを実行すると、起動が完了し、(デバイスが再起動されているため)コードが実行されなくなるまで、以降の起動ブロードキャストはありません。

私はそれをマニフェストに追加すると、イベントを受け取ることはできますが、私はそれをオフにすることはできません。

回答のトップにあるレシピを参照してください。

+0

おかげさまで私はチャンスを得るとすぐにこれを試してくれます。 「時間」に対応して、「それはもっと派手な揺らめきのようなものだ...タイム・ワイミー...もの」私は電話を再起動する前にコードを呼び出しているので、受信者が次の再起動のために登録されると仮定していました。 on_boot_completeがマニフェストに登録されているときに、他のブロードキャストレシーバと同様の動作が発生していました。 – MikeIsrael

+0

@MikeIsrael: "レシーバーが次回の再起動のために登録されると仮定していました" - nope。 'registerReceiver()'の効果は、対応する 'unregisterReceiver()'またはプロセスが終了するまでのいずれか早い方になるまで続きます。 – CommonsWare

+0

ありがとうございました。 – MikeIsrael

関連する問題