Как получать текстовые sms на конкретный порт.
Как получить текстовые sms для определенного порта? Я искал ответа на этот вопрос, но безрезультатно. Это было задано несколько раз, но никто, кажется, не имеет четкого ответа. Мой код выглядит следующим образом:
- ФАЙЛ МАНИФЕЛЯ -
<receiver android:name=".SMSRecieve" android:enabled="true">
<intent-filter>
<action android:name="android.intent.action.DATA_SMS_RECEIVED"/>
<data android:scheme="sms" />
<data android:host="localhost" />
<data android:port="15005" />
</intent-filter>
</receiver>
- Метод отправки SMS -
String messageText = msgTxt.getText().toString();
short SMS_PORT = 15005;
SmsManager smsManager = SmsManager.getDefault();
smsManager.sendDataMessage("5556", null, SMS_PORT, messageText.getBytes(), null, null);
- код приемника вещания -
static final String ACTION = "android.intent.action.DATA_SMS_RECEIVED";
//static final String ACTION = "android.provider.Telephony.SMS_RECEIVED";(tried this too, but failed)
if (intent.getAction().equals(SMSNotifyExample.ACTION)) {
...do some work..
}
Я также попытался заменить android:name
на android.provider.Telephony.SMS_RECEIVED
, но результат тот же.
Мое приложение не получает SMS на указанном порту. Как только я удаляю следующую строку, он отлично работает:
<data android:scheme="sms" />
<data android:host="localhost" />
<data android:port="15005" />
Не могли бы вы предложить, чего мне не хватает?
Ответы
Ответ 1
Спасибо за подсказку!
Я использую это, и он работает:
<receiver android:name=".SMSReceiver">
<intent-filter android:priority="10">
<action android:name="android.intent.action.DATA_SMS_RECEIVED" />
<data android:scheme="sms" />
<data android:port="50009" />
</intent-filter>
</receiver>
Ответ 2
[ ПРИМЕЧАНИЕ: Код, который я упомянул ниже, не работает на эмуляторе, но успешно работает на моем LG P350 с Android V2.3]
Я использовал демо-код, указанный на mobiForge, но изменил sendTextMessage() на sendDataMessage() с PORT_NO как 8901 (также преобразованные текстовые данные в байт []).
Мой приемник:
<receiver android:name=".SMSReceiver">
<intent-filter>
<action android:name="android.intent.action.DATA_SMS_RECEIVED" />
<data android:scheme="sms" />
<data android:port="8901" />
</intent-filter>
</receiver>
Рабочим примером является KRVarma SMSDemo, который также является функциональным.