Как получать текстовые 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, который также является функциональным.