Я хочу создать приложение, которое может принять 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>
код
Broadcast Receiver
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! это верно! –