这是我读取短信的代码。我希望逐行读取收到的短信,如果第一行不包含00,如果第2行包含此字符串,请执行此操作等。
下面是我的代码,它只读取包含00的smss然后这样做不能逐行读取我如何更改此代码逐行读取短信
public void onReceive(Context context, Intent intent)
{
//---get the SMS message passed in---
Bundle bundle = intent.getExtras();
SmsMessage[] msgs = null;
String str = "";
if (bundle != null)
{
//---retrieve the SMS message received---
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]);
str += "SMS from " + msgs[i].getOriginatingAddress();
str += " :";
str += msgs[i].getMessageBody().toString().split("/n");;
str += "\n";
if(str.contains("00"));
{
Intent l = new Intent(context,AgAppMenu.class);
l.putExtra("msg",str);
l.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
context.startActivity(l);
}
答案 0 :(得分:1)
例如,要从String中获取不同的行:
String example = "Hello\nWorld!";
String[] parts = example.split("\n");
// parts[0] contains "Hello"
// parts[1] contains "World!"
对于您的情况,要获取消息的每一行,请使用以下内容:
String[] msg_lines = msgs[i].getMessageBody().toString().split("/n");
所以你的代码可能如下:
String[] msg_lines = null;
for(...) {
msgs[i] = SmsMessage.createFromPdu((byte[])pdus[i]);
str += "SMS from " + msgs[i].getOriginatingAddress();
str += " :";
str += msgs[i].getMessageBody().toString();
str += "\n";
msg_lines = msgs[i].getMessageBody().toString().split("\n");
for (String line : msg_lines)
{
if (line.contains("00")) { /*then*/ }
}
}