Любое SMS-сообщение Порт-адрес обрабатывается как данные (двоичный) SMS, по крайней мере в Android.
Для того чтобы отправить сообщение на конкретный порт с помощью SmsManager
, вы должны использовать метод SendDataMessage()
. Если принимающее приложение прослушивает текстовое сообщение на определенном порту, то оно (предположительно) знает, как декодировать данные в виде обычного текста.
Запуск другого приложения SMS для обработки отправки - как показано в вашем втором методе - не является вероятной опцией. Вероятно, ваши клиенты, работающие по расписанию, не будут обрабатывать сообщения данных вообще. Приложение платформы, например, не обрабатывает их, и поставщик SMS просто отбрасывает их. Если, случайно, у пользователя есть тот, который делает, вашему приложению нужно будет знать, какой ключ и формат данных он ожидает на Intent
, для которого нет, как мне известно, de facto.
Кроме того, если вашему приложению необходимо обрабатывать входящие сообщения, адресованные портам, для него потребуется приемник, настроенный для передачи данных SMS. IntentFilter
будет иметь действие "android.intent.action.DATA_SMS_RECEIVED"
, схему данных "sms"
и порт данных, который может быть конкретным, или подстановочный знак "*"
для прослушивания на всех портах.
Когда я использую сообщение отправки данных, сотовый телефон, получающий сообщение, утверждает свой экземпляр BinaryMessage вместо TextMessage. Есть ли необходимость в дополнительном заголовке текстового сообщения? – Nathan
не знаю, до этого я даже не знал, что у SMS есть номера портов – Jason