Рабочий пример sendDataMessage () для Android - PullRequest
2 голосов
/ 23 января 2012

Я пытался использовать sendDataMessage () из android.telephony.SmsManager с помощью почти каждого семпла, с которым я мог столкнуться .. Пока что безуспешно ..

[Если вы хотите увидеть код, просто проверьте ссылку «Отправка SMS-сообщений на Android» на mobiForge, я думаю, это самая популярная (и та, которую я использовал).]

Этот является одним из примеров в отношении этого вопроса.

Когда я использую стандартный приемник, показанный в примерах, как показано ниже, мой Broadcast Receiver действительно активируется, и я могусм. тост, содержащий мое сообщение, доказывающее, что мой приемник успешно работает.[Между прочим, я вызываю SmsManager.sendTextMessage () , который работает успешно, поэтому проблем здесь нет.)

<receiver android:name=".SMSReceiver"> 
            <intent-filter> 
                <action android:name="android.provider.Telephony.SMS_RECEIVED" /> 
            </intent-filter>
</receiver>

Однако, когда я использую следующий приемник, я не могучтобы получить тост, что означает, что мой приемник явно не активируется, следовательно, нет тоста.

<receiver android:name=".SMSReceiver"> 
            <intent-filter> 
                <action android:name="android.provider.Telephony.SMS_RECEIVED" /> 
                <data android:port="8901"/>
                <data android:scheme="sms"/>
            </intent-filter> 
</receiver>

Мой вопрос здесь Почему? В случае, если некоторые извы думаете, что номер порта в моем sendDataMessage () неверен, тогда я уверяю вас, что его 8901, который является short значением.

Следовательно, я хотел бы попросить любого с решениемчтобы объяснить решение или предоставить рабочий пример.

Спасибо всем, кто может помочь заранее!

С наилучшими пожеланиями, Сиддхант

Ответы [ 2 ]

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

Что ж, похоже, я обнаружил проблему в своем коде.

Исправлено изменение значения android: name в указанном выше приемнике с android.provider.Telephony.SMS_RECEIVED на android.intent.action.DATA_SMS_RECEIVED

Итак, новый приемник будет выглядеть так:

<receiver android:name=".SMSReceiver">  
            <intent-filter>  
                <action android:name="android.intent.action.DATA_SMS_RECEIVED" />  
                <data android:port="8901"/> 
                <data android:scheme="sms"/> 
            </intent-filter>  
</receiver>

Благодаря KRVarma SMSDemo , которая предоставила действительно полезную информацию после понимания кода.

0 голосов
/ 23 января 2012

Здесь - сведения о возможной ошибке в эмуляторе Android, связанной с этой функцией.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...