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