receptor de SMS Android no funciona [cerrada]
-
20-09-2019 - |
Pregunta
Estoy intentando escribir una sencilla aplicación que intenta recibir mensajes SMS y manejarlos. He seguido varios tutoriales pero estoy llegando a ninguna parte, cuando envío de un SMS al emulador, la intención nunca parece ser despedido.
Este es 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 < pdus.length; i++) {
messages[i] = SmsMessage.createFromPdu((byte[])pdus[i]);
}
if (messages.length > -1) {
Log.i(TAG, "Message recieved: " + messages[0].getMessageBody());
NetComm.SendMessage("me", messages[0].getOriginatingAddress(), messages[0].getMessageBody());
}
}
}
}
}
y aquí está mi AndroidManifest.xml:
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.neocodenetworks.smsfwd"
android:versionCode="1"
android:versionName="1.0">
<application android:icon="@drawable/icon" android:label="@string/app_name" android:debuggable="true">
<receiver android:name=".SmsReciever">
<intent-filter>
<action android:name="android.provider.telephony.SMS_RECIEVED"></action>
</intent-filter>
</receiver>
</application>
<uses-sdk android:minSdkVersion="6" />
<uses-permission android:name="android.permission.INTERNET"></uses-permission>
<uses-permission android:name="android.permission.RECEIVE_SMS"></uses-permission>
</manifest>
Te lo agradecería alguna orientación con lo que va mal. Me acaba de entrar en el desarrollo de Android, pero creo que he envuelto alrededor de mi cabeza (la mayoría) de la misma. Durante la supervisión de Logcat del emulador, los eventos de registro no aparecen, y los puntos de interrupción de depuración no se ven afectados, por lo que tengo la sensación de que en algún lugar de mi filtro intención.
Me estoy quedando esta en Android 2.0.1.
Otros consejos
Creo que el manifiesto se ve bien; el problema es con la línea:
if (intent.getAction() == SMS_RECEIVED) {
Creo que debe 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 se debe comparar con el símbolo ==
, debe comparar con el método equals()
esto está mal
intent.getAction() == SMS_RECEIVED)
esto es justo
intent.getAction().equals (SMS_RECEIVED))
Desde la telefonía está en desuso (desde 1.0 creo), este método no funciona más. Echa un vistazo a este tutorial si necesita una solución adecuada: http://mobiforge.com/developing/story/sms-messaging-android (Sólo quería señalar esto, ya que me topé con una gran cantidad de tutoriales que ya no funcionan)