No se puede instanciar el receptor en BroadcastReceiver SMS

¿Por qué tengo este error:

ERROR/AndroidRuntime(854): Uncaught handler: thread main exiting due to uncaught exception ERROR/AndroidRuntime(854): java.lang.RuntimeException: Unable to instantiate receiver com.android.GPS21.SmsReceiver: java.lang.ClassNotFoundException: com.android.GPS21.SmsReceiver in loader dalvik.system.PathClassLoader@43d02ef0 ERROR/AndroidRuntime(854): Caused by: java.lang.ClassNotFoundException: com.android.GPS21.SmsReceiver in loader dalvik.system.PathClassLoader@43d02ef0 

Este es mi evento onReceive:

 public void onReceive(Context context, Intent intent) { // TODO Auto-generated method stub Log.i(LOG_TAG, "Recieved a message"); if (intent.getAction().equals(ACTION)) { // if(message starts with SMStretcher recognize BYTE) StringBuilder sb = new StringBuilder(); // The SMS-Messages are 'hiding' within the extras of the Intent. Bundle bundle = intent.getExtras(); if (bundle != null) { // Get all messages contained in the Intent // Telephony.Sms.Intents.getMessagesFromIntent(intent) does not // work anymore hence the below changes Object[] pduObj = (Object[]) bundle.get("pdus"); SmsMessage[] messages = new SmsMessage[pduObj.length]; for (int i = 0; i < pduObj.length; i++) messages[i] = SmsMessage.createFromPdu((byte[]) pduObj[i]); // Feed the StringBuilder with all Messages found. for (SmsMessage currentMessage : messages) { sb.append("SMS Received From: "); // Sender-Number sb.append(currentMessage.getDisplayOriginatingAddress()); sb.append("\nMessage : "); // Actual Message-Content sb.append(currentMessage.getDisplayMessageBody()); } } // Logger Debug-Output Log.i(LOG_TAG, "[SMSApp] onReceive: " + sb); // Show the Notification containing the Message. Toast.makeText(context, sb.toString(), Toast.LENGTH_LONG).show(); } 

En depurar que onReceive () es error.

Acabo de hacer BroadcastReceiver para recibir SMS y mostrar en la notificación Toast ..

Y trato de enviar SMS de DDMS y ese error aparece ..

Su manifiesto afirma que tiene una clase llamada com.android.GPS21.SmsReceiver , y Android no puede encontrarla.

Esta es una vieja pregunta y no estoy seguro de que este fue tu problema, pero acabo de tener este problema. Dentro de Eclipse, he creado la carpeta (realmente un paquete ) en el lugar equivocado. Por ejemplo

Incorrecto

Introduzca aquí la descripción de la imagen

La razón de esto es incorrecta es que la carpeta de difusión / paquete no está dentro del espacio de nombres como esperaba. Esto sucede si hace clic derecho en My Program / src y crea el paquete allí. Tenga en cuenta que es My Program / src / Broadcast, que es lo que está mal.

La razón es que la clase SmsReceiver no está en su espacio de nombres. En este caso usted puede tener algo como esto en su manifiesto.

 <receiver android:name=".Broadcast.SmsReceiver"> <intent-filter> <action android:name="android.provider.Telephony.SMS_RECEIVED" /> </intent-filter> </receiver> 

Cuando se desencadena, la clase SmsReceiver no se encuentra y obtendrá el error.

Correcto

Introduzca aquí la descripción de la imagen

La forma correcta de hacerlo, y obtener el paquete en el espacio de nombres adecuado es hacer clic derecho en com.example.my.program y crearlo en su lugar. Observe que es My Program / src / com.example.my.program.Broadcast que ahora está correctamente en el mismo espacio de nombres.

Esto se encontrará en la aplicación con el mismo código de manifiesto anterior.

Su clase broadcastReceiver debe ser una clase pública por ejemplo

Public class ReceptorLlamadas extiende BroadcastReceiver

Usted tiene que escribir la ruta completa a su broadcastReceiver, quiero decir, si en su archivo de manifiesto jave package = "com.myapp", pero su MySmsBroadcast.java no es exactamente en el paquete myapp (está en myapp.smsStuff.MySmsBroadcast, para Ejemplo), en el

Tuve el mismo problema también. En mi caso, mi dispositivo virtual estaba dañado.

Intenta crear uno nuevo y ejecutarlo. Trabajó para mí!

Puede escribir el receptor como "estático". En el programa my.sample, debe escribir receptor "static SimpleSmsReceiver

Tengo el mismo error. Después de modificar el "AndroidManifest.xml" de esta manera, se resuelve el error.

receiver android:name=".SimpleSmsReceiver"

->

receiver android:name=".SimpleSMSReceiver"

El error fue así.

 ... 01-13 10:23:10.787: ERROR/AndroidRuntime(378): java.lang.RuntimeException: Unable to instantiate receiver my.sample.SimpleSmsReceiver: java.lang.ClassNotFoundException: my.sample.SimpleSmsReceiver in loader dalvik.system.PathClassLoader[/data/app/my.sample-2.apk] 01-13 10:23:10.787: ERROR/AndroidRuntime(378): at android.app.ActivityThread.handleReceiver(ActivityThread.java:2789) 01-13 10:23:10.787: ERROR/AndroidRuntime(378): at android.app.ActivityThread.access$3200(ActivityThread.java:125) 01-13 10:23:10.787: ERROR/AndroidRuntime(378): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2083) 

Asegúrese de tener un constructor público sin parámetros. Por ejemplo, tengo mi propia implementación BroadcastReceiver que recibe algunas propiedades en el constructor. Después de agregar un constructor público predeterminado (sin parámetros), funciona perfectamente.

  • Interceptar mensajes entrantes de flash en Android Mobile
  • ¿Es posible falsificar un SMS entrante en Android?
  • Cómo configurar mi aplicación sms por defecto en Android Kitkat?
  • Android: ¿Cómo enviar unicode sms programatically y recibirlo en el otro lado correctamente?
  • SMS enviado a través de SmsManager no automáticamente en la carpeta SENT?
  • Android receptor SMS no funciona
  • ¿Abre la aplicación de Android enviando un mensaje de texto?
  • Recuperación de los mensajes SMS desde la tarjeta SIM con android
  • ¿Cómo obtengo el nombre guardado de SMS Sender Contact (Person) mediante "content: // sms / inbox"
  • ¿Cómo funciona "deliveryIntent" en el marco de Android SMS?
  • Intención del informe de entrega de mensajes de Android SMS
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.