как получить смс на конкретный порт .. - PullRequest
13 голосов
/ 28 апреля 2010

Как получить текстовые смс на определенный порт?Я искал ответ на этот вопрос, но безрезультатно.Об этом спрашивали несколько раз, но, похоже, никто не дал четкого ответа.Мой код выглядит следующим образом:

- ФАЙЛ МАНИФЕСТА -

<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" /> 

Не могли бы вы подсказать, что мне не хватает?

Ответы [ 2 ]

2 голосов
/ 24 января 2012

[ ПРИМЕЧАНИЕ: Код, который я упомянул ниже, не работает на эмуляторе, но успешно работает на моем 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> 

Рабочий пример - SMSDemo KRVarma , который также функционален.

2 голосов
/ 27 июля 2010

Спасибо за подсказку!

Я использую это, и оно работает:

        <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>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...