私はポートからSMS
を受け取ることができるアプリを作成したい!しかしそれを実行すると、私のmsg.getMessageBody()
はnullを返します。どうすれば修正できますか?ポートからSMSを受信
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
データSMSメッセージにメッセージ本文はありません。 'SmsMessage#getUserData()'メソッドを使用してデータを取得します。データは、上記のリンクされたポストで受け入れられた答えに示されているように、 'byte'配列の形になります。 –
tnx!そのとおり! –