Error del receptor no registrado cuando se llama a la función onDestroy

Cuando creo la clase que extiende BrodcastReceiver y lo registra. Error Unable to destroy activity, Receiver not registered: null onDestroy () function in MainActivity Cuando llama unregisterReceiver.

OnCreate ():

 ConnectionChangeReceiver connectionChangeReceiver = new ConnectionChangeReceiver(); IntentFilter filter = new IntentFilter(ConnectivityManager.CONNECTIVITY_ACTION); registerReceiver(connectionChangeReceiver, filter); 

OnDestroy ():

 @Override protected void onDestroy() { Log.v("YourActivity", "onDestroy"); unregisterReceiver(connectionChangeReceiver); super.onDestroy(); } 

ConnectionChangeReceiver Clase:

 public class ConnectionChangeReceiver extends BroadcastReceiver { @Override public void onReceive( Context context, Intent intent ) { Toast.makeText(context, "CONN", Toast.LENGTH_SHORT).show(); } } 

Manifest: UPDATE: Después de agregar <action android:name="android.net.conn.CONNECTIVITY_CHANGE" />

 <?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.example.mamrezo.mapapp" > <uses-permission android:name="android.permission.INTERNET" /> <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /> <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /> <application android:allowBackup="true" android:icon="@drawable/ic_launcher" android:label="@string/app_name" android:theme="@style/AppTheme" > <activity android:name="com.example.mamrezo.mapapp.MainActivity" android:label="@string/app_name" android:theme="@style/AppTheme" > <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity> <receiver android:name=".ConnectionChangeReceiver" > <intent-filter> <action android:name="android.net.conn.CONNECTIVITY_CHANGE" /> </intent-filter> </receiver> </application> </manifest> 

Siempre register el receptor en el onStart y lo onStop en el onStop . Lo supe gracias a esta respuesta: https://stackoverflow.com/a/24391706/1203797

Si todavía no funciona en su caso, simplemente envolver unregisterReceiver(connectionChangeReceiver); Un bloque try-catch sería la respuesta, como se indica en el enlace que he publicado anteriormente.

O puede registrarlo en el manifest , por ejemplo:

  <receiver android:name=".ConnectionChangeReceiver" > <intent-filter> <action android:name="android.intent.action.BOOT_COMPLETED" /> </intent-filter> </receiver> 
  • Android Whatsapp Inicio de llamada Receptor de difusión
  • Android: Consulta del registro de llamadas después de que se haya actualizado una vez que termina una llamada
  • ¿Dónde anular el registro de BroadcastReceiver (en un servicio)?
  • NEW_OUTGOING_CALL no se llama en el Samsung Galaxy S
  • ¿Es esto posible comprobar si una difusión fue enviada en modo pegajoso? ¿Puede ser abortado / removido?
  • ¿Cómo identifica * qué * dispositivo bluetooth causa una emisión ACTION_ACL_CONNECTED?
  • Actividad ha filtrado IntentReceiver
  • La aplicación de Android A quiere realizar el seguimiento de los datos de referencia de Google Play para la instalación de la aplicación Android B
  • android.hardware.action.NEW_PICTURE se dispara dos veces
  • Inicio del servicio desde BroadcastReceiver
  • ¿Cómo utilizar Broadcast Receiver en diferentes aplicaciones en Android?
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.