Привет Хабр.
Многие из нас каждый день работают над определенными приложениями, создают что-то свое или выполняют требования нерадивого заказчика.
Одним из таких требований может быть что-то вроде: «Я хочу, чтобы из приложения было невозможно выйти, я не хочу, чтобы можно было сделать что-либо еще, кроме того, что есть в моем приложении».
В этой теме я хочу поделиться своими мыслями о том, как это сделать.
Первое, к чему мы приходим, это то, что мы узнаем о новом типе приложений — Kiosk Mode — особом типе приложений, который обычно запускается на устройствах в общественных местах.
В таких приложениях функционал, к которому может иметь доступ пользователь, ограничен самим приложением.
Доступ к системе или любым настройкам запрещен.
Вы не можете выйти из таких приложений.
А поскольку речь здесь идет об Android, то, к сожалению, их API не предоставляет никаких возможностей для создания приложений такого типа.
Попробуем разобраться, что со всем этим можно сделать и как хоть немного порадовать нашего покупателя.
Аппаратные кнопки и разъемы
Каждое устройство предоставляет нам определенный набор кнопок и различные разъемы, такие как USB, питание и т. д. В этом случае мы, как разработчики, мало что можем сделать.При его размещении необходимо будет предусмотреть конструкцию, которая бы полностью блокировала возможность использования подобных вещей.
Панель с виртуальными кнопками
Начиная с версии Android 3.0 нам предлагается некоторая альтернатива аппаратным кнопкам, например, панель внизу экрана.Сюда входят кнопки «Назад», «Домой», «Параметры», состояние батареи и многое другое.
Но для нашего приложения эта панель может сильно раздражать, так как позволяет выйти из приложения, войти в настройки системы и т.д., что может нарушить необходимый поток работы.
Но есть один способ заставить эту панель исчезнуть.
Все, что будет описано здесь и ниже, требует root-прав на вашем устройстве.
И так, нам нужно будет выполнить простую команду: активность сервисного вызова 79 s16 com.android.systemui Эту команду можно выполнить как через adb, так и напрямую из приложения:
Благодаря этому враждебная нам панель исчезнет с наших глаз.Runtime.getRuntime().
exec(new String[]{"su","-c","service call activity 79 s16 com.android.systemui"});
Но если нам вдруг понадобится эта панель, мы также можем вернуть ее просто командой: am startservice -n com.android.systemui/.
SystemUIService
Или: Runtime.getRuntime().
exec(new String[]{"am","startservice","-n","com.android.systemui/.
SystemUIService"});
Это решение успешно работало на Android 3.0. Пока не могу сказать, как обстоят дела с 4.0.
Кнопки «Домой» и «Назад»
Если по каким-то причинам панель нужна, но нужно изменить поведение кнопок, то вот один рецепт. Начнем с чего-то простого — кнопки «Назад».Здесь все просто, переопределяем метод: Теги: #Android #режим киоска #Разработка Android #Разработка Android
-
Химия Жареной Курицы. Детальный Анализ
19 Oct, 24