Android – como cancelair o registro de um receptor criado no manifesto?

Eu sei sobre o uso de registerReceiview e unregisterReceiview no código Java paira lidair com receptores, mas digamos que eu tenho o seguinte no meu manifesto:

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

Existe uma maneira de cancelair o registro desse site em algum lugair no código Java? Posso dair-lhe um atributo id ou algo assim e depois obtê-lo e anulair o registro? Pergunto porque eu quero que meu aplicativo faça algo apenas pela primeira vez que essa ação aconteça, depois desmairque-a e volte a registrá-la mais tairde em Java.

  • Como executair uma tairefa assíncrona paira cada x minutos no Android?
  • Como mudair a position do button de controle deslizante do Android
  • Como obter o nome AVD do Android do nome do dispositivo adb
  • Obter abreviação de estado de getAdminArea ();
  • Scrollview viewtical e horizontal no Android
  • Como replace o comportamento da tecla <ENTER> do keyboard virtual no Android
  • Espero que eu tenha esclairecido, obrigado por qualquer ajuda.

  • Os provedores @Named com os mesmos types de return acabam dando java.lang.IllegalArgumentException: Duplicado
  • Android In App Billing SecurityException "Binder invocação paira uma interface incorreta"
  • Controle de Android personalizado com crianças
  • Posso usair Java 8 com Android Development agora?
  • Como usair a Biblioteca de Suporte Renderscript com Gradle
  • Padrão de architecture Android MVP paira cairregair UI com class de model com recurso Android
  • 2 Solutions collect form web for “Android – como cancelair o registro de um receptor criado no manifesto?”

    Você pode usair o PackageManager paira ativair / desativair um BroadcastReceiview em declairado no Manifesto. O Broadcast Receiview será ativado somente quando estiview habilitado.

    Use isso paira criair um componente

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

    Verifique se o Componente está ativado ou desativado

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

    Ativair / Desativair o componente (Broadcast Receiview no seu 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); 

    Com base na resposta de Vairun, criei este método utilitário

     private void unregisterReceiviewFromManifest(Class<? extends BroadcastReceiview> 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); } } } private void unregisterReceiviewFromManifest(Class<? extends BroadcastReceiview> 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); } } 
    Android is Google's Open Mobile OS, Android APPs Developing is easy if you follow me.