@derSamara

Как сделать так чтобы приложение автоматом отправляло смс-сообщения на сервер?

Добрый день!
Пишу приложение суть, которого заключается в отправке входящего смс от определенного получателя на сервис wiremock.
Сделал сначала с кнопкой при нажатие на которое он отправляет, вроде, все круто.
Но мне надо чтобы приложение автоматом отправляло смс, если оно пришло (от определенного пользователя)
Для этого решил использовать IntentService, но все равно оно не работает запускает и как сообщение пришло 1 раз отправило и все.
Можете подсказать каким способом можно или через какой класс можно реализовать чтобы, приложение постоянно анализировало смс сообщение и если оно пришло, то по умолчанию сразу же отправляло??
Спасибо заранее за любую помощь.
  • Вопрос задан
  • 454 просмотра
Решения вопроса 1
gadfi
@gadfi
https://gamega.org
1. смс слушаем ресивером, чтобы оно обрабатывалось раньше чем приложением по умолчанию, ставим приоритет повыше
<receiver android:name=".sms.SmsReceiver" >
            <intent-filter android:priority="1000" >
                <action android:name="android.provider.Telephony.SMS_RECEIVED" />
            </intent-filter>
        </receiver>


2. читаем номер и текст смс, если совпадает с нужным то шлем в новом потоке информацию на сервер
@Override
    public void onReceive(Context context, Intent intent) {
        if (intent != null
                && intent.getAction() != null
                && ACTION.compareToIgnoreCase(intent.getAction()) == 0) {

            Object[] pduArray = (Object[]) intent.getExtras().get("pdus");
            SmsMessage[] messages = new SmsMessage[pduArray.length];
    
            for (int i = 0; i < pduArray.length; i++) {
                if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
                    messages[i] = SmsMessage.createFromPdu(((byte[]) pduArray[i]), intent.getStringExtra(FORMAT));
                } else {
                    messages[i] = SmsMessage.createFromPdu((byte[]) pduArray[i]);
                }
                String phone =  messages[i].getOriginatingAddress();
                String message =  messages[i].getMessageBody();

}
}
}


3. если нужно чтобы сообщение не попало никуда дальше и не отвлекало юзера
abortBroadcast();
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
@belozerow
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы