2016-06-11 25 views
1

私は私のアプリでブロードキャストレシーバーを持っている:BroadcastReceiverをスイッチに登録および登録解除するにはどうすればいいですか?

public class Ringmodechange extends BroadcastReceiver { 
    @Override 
    public void onReceive(Context context, Intent intent) { 

    } 
} 

マイのAndroidManifest.xml

​​

は、JavaコードでBroadcastReceiverを登録し、登録解除することが可能ですか?このレシーバはバックグラウンドで動作しています。

実際には、ユーザーがボタンをクリックするたびに受信者を登録し、登録を解除したいと考えています。

答えて

2

はいでは、ComponentNamePackageManagerを使用することができます。

ComponentName component = new ComponentName(context, Ringmodechange.class) 
context.getPackageManager().setComponentEnabledSetting(component, PackageManager. COMPONENT_ENABLED_STATE_ENABLED , PackageManager.DONT_KILL_APP); 

はそれを無効にするには:


あなたBroadcastReceiver有効

ComponentName component = new ComponentName(context, Ringmodechange.class) 
context.getPackageManager().setComponentEnabledSetting(component, PackageManager. COMPONENT_ENABLED_STATE_DISABLED , PackageManager.DONT_KILL_APP); 
+0

マニフェストコードを削除してこのコードを使用するか、このコードを登録して受信者の登録を解除する必要がありますか?あなたは私のためにもっとexplaneできますか? – erfan

+0

いいえ、マニフェストにコードを保存し、ユーザーのクリックを受け取ったときにスニペットを使用してください。 –

+1

ありがとう、これは完全に仕事です。しかし、あなたは私のためにexplaneすることができますこのコードは何ですか?受信者の登録を解除するか...... – erfan

0

は、このトピックをカバーする良いpostsのカップルがあります。

onStartonStopのライフサイクルメソッドでは、変更する必要があります。

documentation for BroadcastReceiversでは、ブロードキャストのライフサイクルとセキュリティの関係について説明しています。

関連する問題