读取并显示传入的消息文本android

我是android开发的新手。我正在开发小型android应用程序。 在我的应用程序中,我想要检索新发送的短信并将此消息显示给用户。 我的代码看起来像

// 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); } } } 

我在Android Manifest.xml中添加了接收者和权限

         

我在布局部分没有做任何事情。当新消息出现时我想要什么作为输出; 消息文本显示给用户使用简单的弹出窗口。 需要帮助..谢谢……

试试这个对我来说很有用,你会看到收到的消息内容向你展示的祝酒词:

 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(); } } } } } 

AndroidManifest.xml

              

使用DDMS通过Telnet将短信发送到您的模拟器

如果你想在短信被收回时显示一个弹出窗口,那么你将需要用android:launchMode="singleTop"创建一个活动android:launchMode="singleTop"如下:

在showast中声明活动为:

  

从HellowordActivity BroadcastReceiver开始活动:

 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); 

在你的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") } 

您还可以查看这些Smspopup应用程序源代码:

Android的smspopup

短信增强