Enable or disable the broadcast receiver when a button is pressed

I want to enable and disable the broadcast receiver to load when a button is clicked. The receiver should not answer until the button is pressed once. I saw some similar questions, but not the answers worked .. please help ...

I tried this code but did not work.

PackageManager pm = getApplicationContext().getPackageManager(); ComponentName componentName = new ComponentName("mypackage", ".receivername"); pm.setComponentEnabledSetting(componentName, PackageManager.COMPONENT_ENABLED_STATE_DISABLED, PackageManager.DONT_KILL_APP); 
+4
source share
4 answers

try it

 b1.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { // TODO Auto-generated method stub PackageManager pm = Re_editActivity.this.getPackageManager(); ComponentName componentName = new ComponentName(currentActivity.this, name_of_your_receiver.class); pm.setComponentEnabledSetting(componentName,PackageManager.COMPONENT_ENABLED_STATE_ENABLED, PackageManager.DONT_KILL_APP); Toast.makeText(getApplicationContext(), "activated", Toast.LENGTH_LONG).show(); } }); b2.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { // TODO Auto-generated method stub PackageManager pm = Re_editActivity.this.getPackageManager(); ComponentName componentName = new ComponentName(currentActivity.this, name_of_your_receiver.class); pm.setComponentEnabledSetting(componentName,PackageManager.COMPONENT_ENABLED_STATE_DISABLED, PackageManager.DONT_KILL_APP); Toast.makeText(getApplicationContext(), "cancelled", Toast.LENGTH_LONG).show(); } }); 

here, button1 is used to activate the broadcast receiver and button2 to deactivate it. You also need to register the broadcast receiver in the manifest file and set

 <receiver android:name="name_of_your_receiver" android:enabled="false"> <intent-filter > <action android:name="android.intent.action.BOOT_COMPLETED"/> </intent-filter> </receiver> 
+18
source

Sample code where you can register your receiver inside the onCreate and onDestroy methods . You can unregister ,

  private BroadcastReceiver receiver; @Overrride public void onCreate(Bundle savedInstanceState){ // your oncreate code IntentFilter filter = new IntentFilter(); filter.addAction("SOME_ACTION"); filter.addAction("SOME_OTHER_ACTION"); receiver = new BroadcastReceiver() { @Override public void onReceive(Context context, Intent intent) { //do something based on the intent action } } registerReceiver(receiver, filter); } 

Remember to run it in the onDestroy method:

 @Override protected void onDestroy() { unregisterReceiver(receiver); //unregisterReceiver can be anywhere based on your requirement } 
+1
source

try the following:

 YourBroadcastReceiver mReceiver = new YourBroadcastReceiver(); IntentFilter filter = new IntentFilter(); //Filter for your receiver... filter.addAction(your action goes here...); registerReceiver(mReceiver , filter); **// Register** unregisterReceiver(mReceiver ); **// Unregister** 
0
source

It seems to me that it’s easier to use it like this:

 public static void setAppComponentEnabled(@NonNull final Context context, @NonNull final Class<?> componentClass, final boolean enable) { final PackageManager pm = context.getPackageManager(); final int enableFlag = enable ? PackageManager.COMPONENT_ENABLED_STATE_ENABLED : PackageManager.COMPONENT_ENABLED_STATE_DISABLED; pm.setComponentEnabledSetting(new ComponentName(context, componentClass), enableFlag, PackageManager.DONT_KILL_APP); } 
0
source

All Articles