Подтвердить что ты не робот

Как отправить SMS из оболочки?

Я хотел бы иметь возможность отправлять фактическое SMS-сообщение из оболочки, используя только командную строку, и не полагаться на какой-либо apk для этого. Я заинтересован в отправке этого сообщения между телефонами, а не с эмулятора на телефон. Например, выполнив команду:

service call phone 2 s16 "1234567890"

Я могу поместить вызов с телефона на телефон с помощью командной строки. Команда "service list" показывает службу isms, и я не могу представить правильные аргументы. Я бы предположил, что один из аргументов должен быть строкой PDU, но до сих пор не повезло.

4b9b3361

Ответ 1

На самом деле это можно сделать, но требует, чтобы adb был установлен (часть SDK android)

adb shell am start -a android.intent.action.SENDTO -d sms:CCXXXXXXXXXX --es sms_body "SMS BODY GOES HERE" --ez exit_on_sent true
adb shell input keyevent 22
adb shell input keyevent 66

Где CCXXXXXXXXXX - код страны, за которым следует номер телефона. Это может не сработать корректно на нестандартных установках Android, вам нужно будет найти правильные значения ключа.

Ответ 2

Вы можете использовать telnet для эмулятора, который делает что-то похожее на "telnet localhost 5554", где 5554 - это порт, который прослушивает эмулятор. После этого вы можете отправить sms-сообщение, выполнив следующие действия:

sms send 1234 "Hello"

1234 может быть любой строкой цифр. Приложите сообщение в кавычки, если вы включаете пробелы.

изменить: команда sms не существует в Android на реальных устройствах, это единственная функция эмулятора, чтобы подделать SMS-сообщение, не отправляющее. Это просто удобство для эмулируемых устройств, которые не имеют доступа к какой-либо реальной сотовой сети.

ср. http://developer.android.com/guide/developing/devices/emulator.html#sms

Ответ 3

Как насчет этого?

service call isms 5 s16 "+??????????" i32 0 i32 0 s16 "SMS TEXT HERE"

Ответ 4

У меня недостаточно очков репутации, чтобы поддержать ответ, данный Дмитрием, но этот IS ответ, который работает с одной незначительной модификацией: по крайней мере для номера в США вместо того, чтобы помещать плюс -sign (+) он работал у меня с "1", например 17079876543...

service call isms 5 s16 "17079876543" i32 0 i32 0 s16 "SMS TEXT HERE"

О, мальчик, мальчик, мальчик... теперь, если я смогу понять, как получать SMS через командную строку и комбинировать это с emacs (в оболочке emacs говорят - он начинает тереть руки и трескает наклонную усмешку... и подумайте обо всех других рычагах командной строки, которые мы можем вытащить!)

Ответ 5

Вы можете отправить любое намерение, которое вы хотите из командной строки, поэтому просто выясните, какое намерение можно использовать для отправки смс, или если его не существует, а затем написания apk, который предоставляет такие намерения, to-sms и отправки намерения вызвать это из командной строки.

Если вы закончите писать apk для этого, немного подумайте о разрешениях. Какой пользователь будет запускать командную строку как - пользователь оболочки adb? любого старого обычного пользователя приложения? Предположительно, у вашего apk есть разрешения sms, но хотите ли вы расширить это до всего на телефоне или реализовать какой-либо механизм безопасности в своих намерениях?