Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/221.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 阅读短信并执行操作_Android - Fatal编程技术网

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中比较字符串的方式