El receptor de Android SMS no funciona

Intento escribir una aplicación simple que intente recibir mensajes SMS y manejarlos. He seguido varios tutoriales pero no llego a ninguna parte, cuando envío un SMS al emulador, el Intento nunca parece ser despedido.

Aquí está mi intención:

package com.neocodenetworks.smsfwd; import android.content.*; import android.os.Bundle; import android.telephony.*; import android.util.Log; public class SmsReciever extends BroadcastReceiver { private static final String SMS_RECEIVED = "android.provider.Telephony.SMS_RECEIVED"; private static final String TAG = "smsfwd"; @Override public void onReceive(Context context, Intent intent) { Log.i(TAG, "Intent recieved: " + intent.getAction()); if (intent.getAction() == SMS_RECEIVED) { Bundle bundle = intent.getExtras(); if (bundle != null) { Object[] pdus = (Object[])bundle.get("pdus"); final SmsMessage[] messages = new SmsMessage[pdus.length]; for (int i = 0; i  -1) { Log.i(TAG, "Message recieved: " + messages[0].getMessageBody()); NetComm.SendMessage("me", messages[0].getOriginatingAddress(), messages[0].getMessageBody()); } } } } } 

y aquí está mi AndroidManifest.xml:

              

Realmente agradecería alguna orientación con lo que está pasando mal. Me estoy metiendo en el desarrollo de Android, pero creo que tengo la cabeza cubierta (la mayoría). Al monitorear el logcat del emulador, los eventos de registro nunca aparecen, y los puntos de corte de depuración nunca se alcanzan, así que tengo la sensación de que están en algún lugar de mi filtro de intención.

Estoy ejecutando esto en Android 2.0.1.

Además de la respuesta de Samuh (necesitas hacer una comparación de objetos en la cadena de acciones, o simplemente no hacer ninguna comparación), en tu archivo de manifiesto has escrito mal SMS_RECEIVED .

Creo que tu manifiesto se ve bien; el problema es con la línea:

 if (intent.getAction() == SMS_RECEIVED) { 

Creo que debería ser: intent.getAction().equals(ACTION)

Espero que ayude..

El nombre de la acción parece requerir una “T” mayúscula en “Telefonía”.

android.provider.Telephony.SMS_RECEIVED

Para las variables String no debe comparar con == symbol, debe comparar con el método equals()

esto está mal

 intent.getAction() == SMS_RECEIVED) 

esto es correcto

 intent.getAction().equals (SMS_RECEIVED)) 

Dado que la telefonía está en desuso (desde 1.0, creo), este método ya no funciona. Eche un vistazo a este tutorial si necesita una solución adecuada: http://mobiforge.com/developing/story/sms-messaging-android (Solo quise observar esto, ya que me encontré con una gran cantidad de tutoriales que ya no funcionan)