【发布时间】:2016-09-27 06:38:16
【问题描述】:
我想创建一个可以从端口接收SMS 的应用程序!但是当运行它时,我的msg.getMessageBody() 返回null。我该如何解决?
manifext.xml
<receiver android:name="data.SMSReceiver" android:enabled="true">
<intent-filter>
<action android:name="android.provider.telephony.SMS_RECEIVED" />
<data android:scheme="sms"
android:host="*"
android:port="4030"/>
</intent-filter>
广播接收器代码
public class SMSReceiver extends BroadcastReceiver {
private static final String SHORTCODE = "+9810004473";
@Override
public void onReceive(Context context, Intent intent) {
Bundle bundle = intent.getExtras();
Object[] messages = (Object[])bundle.get("pdus");
SmsMessage[] sms = new SmsMessage[messages.length];
for(int n=0; n < messages.length; n++) {
sms[n] = SmsMessage.createFromPdu((byte[]) messages[n]);
}
for(SmsMessage msg : sms) {
if(TextUtils.equals(msg.getOriginatingAddress(), SHORTCODE)) {
Toast.makeText(context, "SMS: " + msg.getMessageBody(), Toast.LENGTH_LONG).show();
}
}
}
}
我的Toast 显示:SMS: null
【问题讨论】:
-
数据短信不会有正文。使用
SmsMessage#getUserData()方法检索数据,该数据将采用byte数组的形式,如上面链接帖子中接受的答案所示。 -
tnx!没错!