阅读短信并执行操作

时间:2018-02-02 20:57:31

标签: android

我一直在寻找很长一段时间,但遗憾的是我找不到解决问题的方法,或者我只是不明白该怎么做。 我想阅读短信然后做一些东西,如果文本等于我的字符串文本。 广播接收器在清单中注册 当我擦除我要求编号的部分,并告诉它根据短信身体做一个祝酒词,它可以工作。

package com.journaldev.broadcastreceiver;

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


public class SmsReceiver extends BroadcastReceiver {
    String msg1 = "Testmessage 1";
    String msg2 = "Testmessage 2";
}

@Override
public void onReceive(Context context, Intent intent) {
    Bundle bundle = intent.getExtras();
    SmsMessage[] msgs = null;

    if (bundle != null) {
        Object[] pdus = (Object[]) bundle.get("pdus");
        msgs = new SmsMessage[pdus.length];

        for (int i=0; i<msgs.length; i++) {
            msgs[i] = SmsMessage.createFromPdu((byte[])pdus[i]);

            if(msgs[i].getOriginatingAddress().equals("01XXXX")) {
                String msg = msgs[i].getMessageBody();

                if (msg == msg1) {
                    Toast.makeText(context, " Test 1", Toast.LENGTH_SHORT).show(); //just an example for tests
                }
                else if (msg == msg2) {
                    Toast.makeText(context, "Test 2", Toast.LENGTH_SHORT).show();//just an example for tests
                }
            }
        }
    }
}

2 个答案:

答案 0 :(得分:2)

字符串值比较应使用mystr1.equals(mystr2)mystr1.equalsIgnoreCase(mystr2)函数。

如果您使用mystr1==mystr2,那么您正在检查同一对象实例的变量引用(“指针”)。

答案 1 :(得分:0)

好的感谢您的帮助,比较消息现在可以工作,我也发现了数字的问题。

是:

if(msgs[i].getOriginatingAddress().equals("01XXXX")) {

我把它改为:

if (PhoneNumberUtils.compare(number, sender)){

这是我的完整代码:

package com.example.ossas.smsreader;

import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.os.Bundle;
import android.telephony.PhoneNumberUtils;
import android.telephony.SmsMessage;
import android.widget.Toast;


public class IncomingSms extends BroadcastReceiver {

@Override

public void onReceive(Context context, Intent intent) {

String number = "0XXXX";
String msg1 = "Testmessage 1";
String msg2 = "Testmessage 2";
Bundle bundle = intent.getExtras();
SmsMessage[] msgs;

if (bundle != null) {
    Object[] pdus = (Object[]) bundle.get("pdus");
    msgs = new SmsMessage[pdus.length];

    for (int i = 0; i < msgs.length; i++) {
        msgs[i] = SmsMessage.createFromPdu((byte[]) pdus[i]);
        String sender = msgs[i].getOriginatingAddress();

        if (PhoneNumberUtils.compare(number, sender)){
            String msg = msgs[i].getMessageBody();

        if (msg.equals(msg1)) {
            Toast.makeText(context, "Testmessage 1", Toast.LENGTH_SHORT).show(); //just an example for tests

      } else if (msg.equals(msg2)) {
        Toast.makeText(context, "Testmessage 2", Toast.LENGTH_SHORT).show();//just an example for tests

                        }
                    }
                }
            }
        }
    }