Я пытался создать простое приложение, которое позволит пользователю настраивать поведение режима полета в Android.Мотивация для этого от родственника, у которого есть Samsung Fascinate, и во время звонков он случайно включит режим полета.Это происходит, когда он держит телефон, случайно удерживает боковую кнопку питания / блокировки, что открывает диалоговое окно с меню «Тихий режим», «Режим полета» и «Выключение».Он случайно запускает режим полета от прикосновения телефона к своей щеке.Это сбрасывает вызов и раздражает его.
В конечном итоге я хотел бы создать приложение, которое предотвращает отключение сотовой связи, когда пользователь находится в процессе разговора.Но для первой итерации я подумал, что имеет смысл позволить пользователю вручную выбрать, какие радиостанции не будут отключены в режиме полета.
Я не ищуизменить исходный код Android или сделать что-то, что потребует рутирования.Я ищу решение в рамках стандартного фреймворка
Моя первая попытка решить эту проблему состояла в создании приложения, которое изменило бы System.AIRPLANE_MODE_RADIOS
примерно так:
System.putString(getApplication().getContentResolver(), System.AIRPLANE_MODE_RADIOS, "");
СогласноAPI docs , эта константа представляет собой «список радиостанций, разделенных запятыми, которые необходимо отключить, когда включен режим полета».Кажется, что в режиме полета эта константа фактически не используется, и после внесения изменений она продолжает работать как обычно.
Моя следующая попытка состояла в том, чтобы создать BroadCastReceiver, получить действие AIRPLANE_MODE и отправить намерение для его отмены:
Intent am = new Intent(Intent.ACTION_AIRPLANE_MODE_CHANGED);
intent.putExtra("state", 0);
context.sendBroadcast(am);
Это отключает режим полета после его активации.Однако, если пользователь находился в середине разговора, он все равно будет отброшен (что имеет смысл).Так что это не совсем решение моей проблемы.
Кто-нибудь знает, как запретить режиму сотовой связи отключать сотовую радиосвязь?