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:

 <?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 …

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

  • BroadcastReceiver para la pantalla de encendido / apagado no funciona
  • In-Application BroadcastReceiver
  • Mover un mensaje a la bandeja de entrada desde la base de datos
  • Android OrderedBroadcast No funciona en la versión de lanzamiento
  • BroadcatReceiver declarado en manifest.xml que no recibe las intenciones de LocalBroadcastManager
  • AlarmManager activa alarmas en el pasado inmediatamente antes de que BroadcastReceiver pueda reprogramarlo
  • BroadcastReceiver ClassNotFound Exception
  • Iniciar una actividad cuando la pantalla
  • Android - Obtención de contexto de un receptor de difusión onReceive () para enviar a
  • AlarmManager y BroadcastReceiver en lugar de servicio - ¿es eso malo? (Se acabó el tiempo)
  • Actividad abierta dos veces
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.