Leer y mostrar texto de mensaje entrante android

Soy nuevo al desarrollo androide. Estoy desarrollando la pequeña aplicación androide. En mi aplicación quiero recuperar los sms recién venidos y mostrar este mensaje al usuario. Mi código parece

// HellowordActivity.java package com.example.helloword; import android.content.BroadcastReceiver; import android.content.Context; import android.content.Intent; import android.app.Activity; import android.os.Bundle; import android.telephony.SmsMessage; import android.util.Log; import android.widget.Toast; public class HellowordActivity extends BroadcastReceiver { public void onReceive(Context context, Intent intent) { Bundle myBundle = intent.getExtras(); SmsMessage [] messages = null; String strMessage = ""; if (myBundle != null) { Object [] pdus = (Object[]) myBundle.get("pdus"); messages = new SmsMessage[pdus.length]; for (int i = 0; i < messages.length; i++) { messages[i] = SmsMessage.createFromPdu((byte[]) pdus[i]); strMessage += "SMS From: " + messages[i].getOriginatingAddress(); strMessage += " : "; strMessage += messages[i].getMessageBody().toString(); strMessage += "\n"; } // Toast.makeText(context, strMessage, Toast.LENGTH_SHORT).show(); Intent _intent = new Intent(context, PopupActivity.class); _intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_SINGLE_TOP); _intent.putExtra("strMessage", strMessage); startActivity(_intent); } } } 

He añadido el receptor y el permiso en Android Manifest.xml

  <uses-permission android:name="android.permission.RECEIVE_SMS"/> <receiver android:name=".HellowordActivity" > <intent-filter > <action android:name="android.provider.Telephony.SMS_RECEIVED"/> </intent-filter> </receiver> <activity android:name=".PopupActivity" android:launchMode="singleTop" /> 

No estoy haciendo nada en la parte de diseño. Lo que quiero como una salida cuando llegue el nuevo mensaje; visualización de texto de mensaje al usuario con popup simple. Necesito ayuda .. Gracias …

Pruebe esto funciona para mí obtendrá un brindis que se muestra a usted con el contenido del mensaje recibido:

 package com.example.a; import android.content.BroadcastReceiver; import android.content.Context; import android.content.Intent; import android.os.Bundle; import android.telephony.SmsMessage; import android.util.Log; import android.widget.Toast; public class SMSBroadcastReceiver extends BroadcastReceiver { private static final String SMS_RECEIVED = "android.provider.Telephony.SMS_RECEIVED"; private static final String TAG = "SMSBroadcastReceiver"; @Override public void onReceive(Context context, Intent intent) { Log.i(TAG, "Intent recieved: " + intent.getAction()); if (intent.getAction().equals(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) { Toast.makeText(context, "Message recieved: " + messages[0].getMessageBody(), 7000).show(); } } } } } 

El archivo AndroidManifest.xml

 <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.example.a" android:versionCode="1" android:versionName="1.0" > <uses-sdk android:minSdkVersion="8" android:targetSdkVersion="15" /> <uses-permission android:name="android.permission.RECEIVE_SMS"/> <uses-permission android:name="android.permission.HARDWARE_TEST"/> <application android:icon="@drawable/ic_launcher" android:label="@string/app_name" > <receiver android:name=".SMSBroadcastReceiver" > <intent-filter> <action android:name="android.provider.Telephony.SMS_RECEIVED" > </action> </intent-filter> </receiver> </application> </manifest> 

Utilice DDMS para enviar sms a su emulador a través de Telnet

si desea mostrar una ventana emergente cuando se reciba SMS, deberá crear una actividad con android:launchMode="singleTop" como:

En manifast declare Actividad como:

 <activity android:name=".PopupActivity" android:launchMode="singleTop" /> 

Desde HellowordActivity BroadcastReceiver iniciar Actividad como:

 Intent intent = new Intent(context, PopupActivity.class); intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_SINGLE_TOP); intent .putExtra("strMessage", strMessage); context.startActivity(intent); 

Y en su PopupActivity.class :

 public class PopupActivity extends Activity { @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); // The activity is being created. Intent intent= getIntent();//get message here String strMessage = intent.getStringExtra("strMessage"); //NOW YOU CAN SHOW THIS MESSAGE IN POPUP } @Override protected void onStop() { super.onStop(); this.finish(); // The activity is no longer visible (it is now "stopped") } 

También puedes realizar el pago de estas aplicaciones Smspopup código fuente:

android-smspopup

sms-potenciador

  • Uso del nuevo proveedor de contenido de Telephony para leer SMS
  • Tarjeta dual sim enviar sms android
  • La forma más rápida y rápida de obtener nuevos mensajes sms al iniciar la aplicación - Android
  • ¿Cómo puedo enviar mensajes SMS en el BACKGROUND usando Android?
  • Envío de SMS a un dispositivo de prueba real (no emulador) vía DDMS o instancia de emulador
  • ¿Cómo usar el proveedor de contenido de SMS? ¿Dónde están los documentos?
  • Podría un emulador enviar un SMS a sí mismo
  • Interceptar mensajes entrantes de flash en Android Mobile
  • Android - Extraer texto de SMS
  • URL de SMS en Android
  • Cómo enviar un SMS en Android Kitkat desde la aplicación no predeterminada sin escribir a SMS Provider
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.