Android – come annullare la logging di un ricevitore creato nel manifesto?

So di utilizzare registerReceiver e unregisterReceiver nel codice Java per affrontare i ricevitori, ma diciamo che ho il seguente nel mio manifesto:

<receiver android:name=".headsetHook"> <intent-filter android:priority="99999999999"> <action android:name="android.intent.action.ACTION_HEADSET_PLUG" /> </intent-filter> </receiver> 

C'è un modo per annullare la logging da qualche parte nel codice Java? Posso darlo un attributo id o qualcosa e quindi get e annullare la logging? Chiedo perché voglio che la mia app faccia qualcosa solo alla prima volta che questa azione accada, quindi annullala la logging e ricollegandola più tardi in Java.

  • Come ridurre il divario tra l'icona di navigazione e il titolo della barra degli strumenti?
  • Come registrare un servizio di riconoscimento vocale personalizzato?
  • Come analizzare JSON in Android
  • Ottenere il messaggio di errore "caricatore di contenuti Android sdk bloccato a 0%"
  • Come salvare le immagini da Fotocamera in Android in una cartella specifica?
  • L'applicazione Ionic / Cordova non riceve notifica push in background
  • Spero di averlo fatto chiaro, grazie per qualsiasi aiuto.

  • La qualità dell'image è scarsa usando la camera personalizzata
  • Avviare un'attività da una vista in android?
  • Cattura foto ruotare 90 gradi in cellulare samsung
  • text di android texttext mostra l'exception nullpointer
  • Android - metodo setOnClickListener come funziona?
  • C'è un modo per rilevare quando l'utente ha modificato l'orologio sul proprio dispositivo?
  • 2 Solutions collect form web for “Android – come annullare la logging di un ricevitore creato nel manifesto?”

    È ansible utilizzare PackageManager per abilitare / disabilitare un BroadcastReceiver dichiarato nel Manifest. Il Broadcast Receiver viene distriggersto solo quando è abilitato.

    Utilizza questo command per creare un componente

     ComponentName component = new ComponentName(context, MyReceiver.class); 

    Controllare se il componente è abilitato o disabilitato

     int status = context.getPackageManager().getComponentEnabledSetting(component); if(status == PackageManager.COMPONENT_ENABLED_STATE_ENABLED) { Log.d("receiver is enabled"); } else if(status == PackageManager.COMPONENT_ENABLED_STATE_DISABLED) { Log.d("receiver is disabled"); } 

    Abilitazione / distriggerszione del componente (Ricevitore Broadcast nel tuo caso)

     //Disable context.getPackageManager().setComponentEnabledSetting(component, PackageManager.COMPONENT_ENABLED_STATE_DISABLED , PackageManager.DONT_KILL_APP); //Enable context.getPackageManager().setComponentEnabledSetting(component, PackageManager.COMPONENT_ENABLED_STATE_ENABLED , PackageManager.DONT_KILL_APP); 

    Sulla base della risposta di Varun ho creato questo metodo utilitario

     private void unregisterReceiverFromManifest(Class<? extends BroadcastReceiver> clazz, final Context context) { final ComponentName component = new ComponentName(context, clazz); final int status = context.getPackageManager().getComponentEnabledSetting(component); if(status == PackageManager.COMPONENT_ENABLED_STATE_ENABLED) { context.getPackageManager() .setComponentEnabledSetting(component, PackageManager.COMPONENT_ENABLED_STATE_DISABLED, PackageManager.DONT_KILL_APP); } } 
    L'Android è un fan Android di Google, tutto su telefoni Android, Android Wear, Android Dev e applicazioni Android Games e così via.