我想创建应用程序,可以从端口接收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!那就对了! –