如何在收到某些短信时在android上显示文字

时间:2013-12-09 21:39:46

标签: java android eclipse

我是Android开发和java编程的新手。我只是想知道如果收到这个“确定”的消息,如何打印或显示某些文本。 我在网上得到了关于如何接收和阅读短信的代码。

ReadIncomingSms.java

package readnewsms.adk;

import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.os.Bundle;
import android.telephony.SmsManager;
import android.telephony.SmsMessage;
import android.util.Log;
import android.widget.Toast;

public class IncomingSms extends BroadcastReceiver {

// Get the object of SmsManager
final SmsManager sms = SmsManager.getDefault();

public void onReceive(Context context, Intent intent) {

    // Retrieves a map of extended data from the intent.
    final Bundle bundle = intent.getExtras();

    try {

        if (bundle != null) {

            final Object[] pdusObj = (Object[]) bundle.get("pdus");

            for (int i = 0; i < pdusObj.length; i++) {

                SmsMessage currentMessage = SmsMessage.createFromPdu((byte[])    pdusObj[i]);
                String phoneNumber = currentMessage.getDisplayOriginatingAddress();

                String senderNum = phoneNumber;
                String message = currentMessage.getDisplayMessageBody();



                Log.i("SmsReceiver", "senderNum: "+ senderNum + "; message: " + message);


               // Show Alert
                int duration = Toast.LENGTH_LONG;
                Toast toast = Toast.makeText(context, 
                             "senderNum: "+ senderNum + ", message: " + message, duration);
                toast.show();


            }
            // end for loop
          } // bundle is null 
    } catch (Exception e) {
        Log.e("SmsReceiver", "Exception smsReceiver" +e);

    }
}    

}

然后我在toast.show()之后添加了这段代码;仍在循环内

if  (message.equals(("1"))){
                    System.out.println("user sends 1");
                } else {
                    System.out.println("other");
                }

如何在屏幕上显示这些消息?或者如果消息包含某个值,我如何评估代码,然后我将根据发送的消息打印某个消息。例如,如果INCOMING消息包含1,则应用程序将显示用户发送1。

2 个答案:

答案 0 :(得分:0)

使用:

if (message.contains("1")) {
    //do something is message contains string '1' anywhere
    Log.d("MYTAG", "user send 1");
}

if (message.equals("1")) {
    //do something if the whole message equals to string '1'
    Log.d("MYTAG", "user send 1");
}

阅读有关String方法的here

要更新textView(假设您已在xml中定义了一个),请使用findViewById()找到它,然后使用:

myTextView.setText("user send 1")

您还可以在logcat中显示消息,因此不使用System.out.println(),而是使用:

Log.d("MYTAG", "user send 1");

或任何你想要的消息。有关布局的更多信息here

答案 1 :(得分:0)

看起来您想在屏幕上放置Toast。这会在底部显示一条消息。代码如下所示:

if  (message.equals(("1"))){
    Toast toast = Toast.makeText(context, "User sent 1");
    toast.show();
                } else {
                    Toast toast = Toast.makeText(context, "Other);
                    toast.show();
                }