Android 阅读短信并执行操作
我已经寻找了很长一段时间,但遗憾的是,我没有找到解决问题的办法,或者我就是不知道怎么做。 我想读短信,然后做一些事情,如果文本等于我的字符串文本。 广播接收器已在舱单中注册 当我删除了我要号码的部分,然后告诉它根据短信正文来祝酒时,它就起作用了Android 阅读短信并执行操作,android,Android,我已经寻找了很长一段时间,但遗憾的是,我没有找到解决问题的办法,或者我就是不知道怎么做。 我想读短信,然后做一些事情,如果文本等于我的字符串文本。 广播接收器已在舱单中注册 当我删除了我要号码的部分,然后告诉它根据短信正文来祝酒时,它就起作用了 package com.journaldev.broadcastreceiver; import android.content.BroadcastReceiver; import android.content.Context; import and
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
}
}
}
}
}
package com.journaldev.broadcastreceiver;
导入android.content.BroadcastReceiver;
导入android.content.Context;
导入android.content.Intent;
导入android.os.Bundle;
导入android.telephony.sms消息;
导入android.widget.Toast;
导入android.telephony.smsmsmanager
公共类SmsReceiver扩展了BroadcastReceiver{
字符串msg1=“Testmessage 1”;
字符串msg2=“Testmessage 2”;
}
@凌驾
公共void onReceive(上下文、意图){
Bundle=intent.getExtras();
SmsMessage[]msgs=null;
if(bundle!=null){
Object[]pdus=(Object[])bundle.get(“pdus”);
msgs=新SMS消息[PDU.length];
对于(int i=0;i字符串值比较应使用mystr1.equals(mystr2)
或mystr1.equalsIgnoreCase(mystr2)
函数
如果您使用mystr1==mystr2
,那么您正在检查指向同一对象实例的变量引用(“指针”)。好的,谢谢您的帮助,比较消息现在起作用了,我还发现了数字的问题
它是:
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
}
}
}
}
}
}
package com.example.ossas.smsreader;
导入android.content.BroadcastReceiver;
导入android.content.Context;
导入android.content.Intent;
导入android.os.Bundle;
导入android.telephony.phonenumberrutils;
导入android.telephony.sms消息;
导入android.widget.Toast;
公共类收入SMS扩展广播接收器{
@凌驾
公共void onReceive(上下文、意图){
字符串编号=“0XXXX”;
字符串msg1=“Testmessage 1”;
字符串msg2=“Testmessage 2”;
Bundle=intent.getExtras();
短信[]短信;
if(bundle!=null){
Object[]pdus=(Object[])bundle.get(“pdus”);
msgs=新SMS消息[PDU.length];
对于(int i=0;i
==
不是Java中比较字符串的方式