No se puede instanciar el receptor java.lang.ClassNotFoundException
Tengo un error en mi aplicación android cuando intenta instanciar un receptor que utilizo para iniciar un servicio al arrancar. El error es obvio, no puede encontrar el archivo de clase de mi receptor. Pero todo está bien con mi archivo de manifiesto, los paquetes y todos y no tengo ni idea de lo que está sucediendo. Aquí está mi código:
package dti.obd.reader; import dti.obd.reader.service.MainService; import android.content.BroadcastReceiver; import android.content.Context; import android.content.Intent; public class BootReceiver extends BroadcastReceiver { @Override public void onReceive(Context context, Intent intent) { Intent serviceIntent = new Intent(MainService.class.getName()); context.startService(serviceIntent); } }
Y mi archivo de manifiesto:
- ¿Por qué no funciona LocalBroadcastManager en lugar de Context.registerReceiver?
- Huh? FindViewById () no se puede llamar dentro de onReceive ()?
- Compruebe si hay un BroadCastReceiver registrado con una cadena de acción
- Cómo agregar Snackbars en un BroadcastReceiver?
- ¿Por qué Android está ignorando la creación de la Notificación?
<?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="dti.obd.reader" android:versionCode="1" android:versionName="1.0" > <uses-sdk android:minSdkVersion="8" /> <application android:icon="@drawable/ic_launcher" android:label="@string/app_name" > <service android:name=".service.MainService" > <intent-filter > <action android:name="dti.obd.reader.service.MainService" /> </intent-filter> </service> <receiver android:name="dti.obd.reader.BootReceiver" > <intent-filter > <action android:name="android.intent.action.BOOT_COMPLETED" > </action> </intent-filter> </receiver> </application> <uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" /> </manifest>
¿Alguien sabe el error? Parece que el paquete y los nombres están bien …
- ¿Por qué no se inicia el servicio después de BOOT_COMPLETED?
- Android: BroadcastReceiver intención de detectar la foto de la cámara tomada?
- Registro / cancelación de registro dinámico de un receptor de difusión en android
- La notificación no se elimina al hacer clic en el botón de acción incluso después de proporcionar el ID de notificación
- Widget de actualización de Android desde el receptor de difusión
- Java.lang.IllegalArgumentException: registra demasiados receptores de difusión
- Mejores prácticas de Android para actualizar la interfaz de usuario de BroadcastReceiver a una determinada actividad
- ¿Cómo inicio mi aplicación al inicio?
Tienes que poner a tu Reciever
en algún package
. El sistema no podrá instanciar si está en el paquete principal.
Yo tuve el mismo problema. Afortunadamente antes de buscar el error en Internet estaba haciendo otro proyecto java. Acabo de darme cuenta de que el error allí era similar a éste. Lo probé justo ahora y funcionó. 🙂
tratar:
<receiver android:name=".BootReceiver" >
Añade el nombre del paquete porque ha definido:
package="dti.obd.reader"
También me he enfrentado a este problema. La adición del nombre completo del paquete a la definición del receptor en el archivo de manifiesto no ayudó. El problema era que había un viejo archivo odex correspondiente a mi archivo apk. El sistema Android carga las clases del archivo odex, por lo que no puede encontrar la clase del receptor.
Soluciones provisionales:
- Elimine el archivo odex antiguo o
- Dar un nuevo nombre a tu apk
http://www.addictivetips.com/mobile/what-is-odex-and-deodex-in-android-complete-guide/
Usted tiene que poner a su receptor en algún paquete En lugar de agregar el camino completo del receptor
<receiver android:name="com.yourpackage.BootReceiver" >
Suena a Weired pero en mi caso resolvió el problema
Esperanza Alguien será fructífero con esta experiencia
- Multitouch para Android y getActionMasked ()
- Convertir milisegundo a Joda Fecha Hora o para zona 0000