Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Android > Проиграть mp3 на входящее смс


Автор: fedormoore 28.1.2014, 14:09
Здравствуйте!
пишу программку по обработке смс от банка и появилась идея установить рингтон на смс от банка (прошу прощения за тавтология). но вот как "заглушить" звук по умолчания и проиграть мой звук не знаю. помогите кто чем может.
спасибо!

Автор: javastic 28.1.2014, 15:14
Если в кратце, то в манифесте указываешь своего слушателя событий и даешь ему большой приоритет. 
Код

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

Обычно у стандартного андройда слушатели имеют приоритет "0".  Ну и в методе OnReceive() своего слушателя после проигрывания своей мелодии в конце делаешь abortBroadcast() этот метод предотвращает обработку другими приложениеями (например стандартным SMS receiver'ом). От этого контекста и пляшешь. Дальше много вариантов обработки событий.

Автор: fedormoore 29.1.2014, 06:46
спасибо javastic, в принципе так и хотел сделать с abortBroadcast, но все таки хочется что бы другие приложения смогли тоже себе подгрузить смс. может быть можно вручную добавить смс
Код

Uri uri = Uri.parse("content://sms/inbox");
Сursor c= getContentResolver().query(uri, null, null ,null,null);
startManagingCursor(c);

Автор: javastic 30.1.2014, 11:09
Ну тогда делаешь так: 1. проигрываешь свой mp3, 2. запоминаешь громкость стандартного проигрывателя звука событий. 3. устанавливаешь проигрывание звука событий в "0" (выкл.), 4. не прерываешь выполнение. 5. смс-ка передается остальным обработчикам. 6. они принимают и проигрывают в режиме выкл. 7. через несколько секунд обратно устанавливаешь, то что отключил на шаге. 2. 
примерно так.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)