我是一个在java编程时的新手。 我试图从一个特定的数字捕获一个短信,并搜索所述短信的特定字符串,如“平衡”,并将下一个字符串复制到一个变量。 结果就像“平衡:100.00”
到目前为止,我只能使用BroadcastReceiver
捕获传入的短信SMSReceiver:
public class SMSReceiver extends BroadcastReceiver
{
String origin, body;
@Override
public void onReceive(Context context, Intent intent)
{
Bundle extras = intent.getExtras();
SmsMessage[] msgs = null;
if (extras == null) return;
Object[] pdus = (Object[]) extras.get("pdus");
msgs = new SmsMessage[pdus.length];
for (int i=0; i<msgs.length; i++)
{
msgs[i] = SmsMessage.createFromPdu((byte[])pdus[i]);
// Original Address
origin = msgs[i].getOriginatingAddress();
// Message body
if ("123".equals(origin))
{
body = msgs[i].getMessageBody().toString();
Toast.makeText(context, body, Toast.LENGTH_LONG).show();
abortBroadcast();
}
else
abortBroadcast();
break;
}
}
}
是否有可能任何人都可以给我一个如何做到这一点的指南。
答案 0 :(得分:0)
不确定你的问题是什么,因为你实际上没有说,但是这个例程对我来说可以捕获传入的短信。
public class SMSReceiver extends BroadcastReceiver {
private SmsMessage[] getMessagesFromIntent(Intent intent) {
SmsMessage retMsgs[] = null;
Bundle bdl = intent.getExtras();
try {
Object pdus[] = (Object[]) bdl.get("pdus");
retMsgs = new SmsMessage[pdus.length];
for (int n = 0; n < pdus.length; n++) {
byte[] byteData = (byte[]) pdus[n];
retMsgs[n] = SmsMessage.createFromPdu(byteData);
}
} catch (Exception e) {
Log.e("GetMessages", "fail", e);
}
return retMsgs;
}
@Override
public void onReceive(Context context, Intent intent) {
String message;
if (!intent.getAction().equals("android.provider.Telephony.SMS_RECEIVED")) return;
SmsMessage msg[] = getMessagesFromIntent(intent);
// filter through all the messages
for (int i = 0; i < msg.length; i++) {
message = msg[i].getDisplayMessageBody();
// Do something with the message
}
}
}
}