sendbroadcast - start broadcast receiver android
java.lang.InstantiationException: la clase no tiene constructor de argumentos cero (4)
Estoy tratando de usar un BroadcastReceiver
como una clase interna para rastrear el estado de la red, pero obtuve la excepción en el título. ¿Qué debo hacer para solucionar este problema?
public class NetworkChangeReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
final ConnectivityManager connMgr = (ConnectivityManager) context
.getSystemService(Context.CONNECTIVITY_SERVICE);
final android.net.NetworkInfo wifi = connMgr.getNetworkInfo(ConnectivityManager.TYPE_WIFI);
final android.net.NetworkInfo mobile = connMgr.getNetworkInfo(ConnectivityManager.TYPE_MOBILE);
if (wifi.isAvailable() || mobile.isAvailable()) {
setupData();
Log.d("Netowk Available ", "Flag No 1");
}
}
}
Tu
El receptor de difusión interno debe ser estático (para ser registrado a través de Manifest)
O
El receptor de difusión no estática debe estar registrado y no registrado dentro de la clase principal
para esto.
Estaba usando un receptor de transmisión interno, sin registrarlo dentro de la clase. O haga que sea estático y se registre en Manifest, o haga que no sea estático y que se registre y anule el registro dentro de la clase principal.
Una clase interna no estática no se puede registrar a través del AndroidManifest.xml
. Tu también puedes:
Regístrelo dinámicamente como se describe en este hilo y elimine el constructor vacío.
O,
Convierta su clase interna en estática y regístrela en AndroidManifext.xml
.
e ~~ Acabo de encontrar ese problema, y refactorizo la clase NetworkChangeReceiver
a otro lugar
simplemente haga que su clase receptora sea estática como:
public [static] class ReceiverClass extends BroadcastReceiver