Необходимо запустить приложение для андройда в режиме "Kiosk Mode". Необходимо, чтобы пользователь не мог закрыть или свернуть приложение, а также войти в настройки устройства.
Стоит задача сделать приложение для отзывов. Работать оно будет на планшете, доступном клиентам.
Для достижения поставленной задачи я уже сделал следующее (используется Xamarin):
Запустил приложение как лаунчер и развернул приложение на весь экран:
[Activity(Label = "App1", MainLauncher = true, Icon = "@drawable/icon",
Theme = "@android:style/Theme.Light.NoTitleBar.Fullscreen")]
[IntentFilter(new[] { Intent.ActionMain }, Categories = new[] {
Intent.CategoryHome, Intent.CategoryDefault })]
Сделал пустым обработчик события кнопки назад:
public override void OnBackPressed(){}
Сейчас пользователь может использовать панель уведомлений и кнопку домой и кнопку назад. Доступ к кнопкам домой и назад не страшен, так как кнопка домой возвращает пользователя к приложению, и из меню задач лаунчер (это приложение) закрыть нельзя.
Необходимо заблокировать панель уведомлений или сделать так, чтобы ее использовать было практически невозможно (чтобы пользователь не смог зайти в настройки, выключить Wi-fi и так далее). Есть рут права.
Использовать изоленту, бесцветный лак, ломать тачскрин и другие аппаратные способы блокирования доступа к панели уведомлений использовать нельзя.
Дополнение 1
Использование следующего кода приводит к полному отключению экрана до перезагрузки. Возможно, если команда для отключения только строки состояния?
Java.Lang.Process proc = Java.Lang.Runtime.GetRuntime().Exec(
new String[] { "su", "-c", "service call activity 42 s16 com.android.systemui" });
proc.Wait();
Дополнение 2
При использовании программ full!screen и Hide System Bar(Full Screen) программа не отображается. Отображается только картинка рабочего стола и больше ничего до перезагрузки. Планшет Prestigo multipad weze 3341 3g (PMT 3341_3G), android 5.1.1
Ответ
Убил строку состояния приложением Custom Quick Settings и командами под рутом:
settings put secure user_setup_complete 0
settings put global device_provisioned 0
Комментариев нет:
Отправить комментарий