Этой публикацией я хотел бы спровоцировать обсуждение проблемы, которая возникает в системе Android: невозможность без ухищрений и хаков методами, одобренными официальными руководствами, создавать приложения для выполнения в защищенной среде (киоск-приложения).
Программное обеспечение киоска должно защищать интернет-киоск (в данном случае Android-терминал) от несанкционированной активности.
Киоск должен быть защищен от возможности вызова системных диалогов, доступа к настройкам устройства, доступа к файловой системе и т.п.
Приложение, над которым я работаю, необходимо устанавливать на терминалы, которые расположены в общественных местах, например, в торговых центрах, кафе.
Соответственно, любого пользователя по умолчанию следует считать злоумышленником, желающим получить доступ к настройкам системы, изменить их, перезагрузить систему или установить вредоносное приложение.
Киоск-система должна предотвращать любые подобные действия.
Еще один класс подобных приложений — электронные меню в ресторанах.
Я видел такие меню, реализованные как на устройствах Android, так и на iPad. Причём оба использовали одно и то же программное обеспечение, отличающееся лишь дизайном под конкретный ресторан.
Итак, iOS-устройство было, на мой взгляд, более защищенным, потому что.
в Android-версии я мог без проблем зайти в настройки, у меня была возможность их изменить.
В iOS все системные функции для пользователя были отключены и все, что мне предлагалось, это ввести определенный ПИН-код, который, судя по всему, разблокировал бы киоск.
Поиск документации на Developer.android.com Я не получил полного представления о проблеме с киосками.
Подобные вопросы периодически задаются на stackoverflow, и люди даже предлагают собственные решения некоторых проблем с киосками.
Вот, например, некоторые из них: 1. Есть возможность запускать Activity или все приложение в полноэкранном режиме, скрывая статусбар.
Google, кажется, называет это режимом погружения.
Также вы можете временно скрыть системные кнопки (панель внизу экрана).
Подходит для видеоплееров, игр, презентационных программ.
К сожалению, пользователь может «вытащить» строку состояния обратно, проведя пальцем вниз по верхней части экрана, а также вернуть панель системных кнопок.
2. Можно получить экземпляр системной службы «панель состояния» и использовать отражение для вызова скрытого метода отключения.
К сожалению, сделав это мы получим SecurityException, потому что.
Только системным приложениям разрешено скрывать строку состояния.
Чтобы стать системным приложением, вам необходимо подписать свое приложение ключом, полученным от разработчика устройства.
Такая возможность имеется не всегда.
Кроме того, вызов скрытого недокументированного метода — не лучшая идея.
Видимо, недаром разработчики системы не предусмотрели открытый интерфейс для этого метода.
3. Мы можем переопределить метод onBackPressed в классе Activity, отключив системную кнопку «Назад».
Мы можем прикрепить фильтр намерений к действию HOME, перехватив системную кнопку «Домой».
Но перехватить действие системной кнопки «Последние» мы не можем.
4. Бороться с нажатием системной кнопки «Последние» или вызовом статусбара можно путем перехвата события «потеря фокуса».
Когда наша Activity теряет фокус, мы немедленно возвращаем его.
К сожалению, между потерей и восстановлением фокуса может пройти около секунды (может меньше, может больше, в зависимости от скорости системы) и пользователь может успеть зайти в меню настроек или удалить наше приложение, или сделать что-то еще.
5. Мы можем вообще отключить системные кнопки, отредактировав файл /system/build.prop: qemu.hw.mainkeys=0
Но, во-первых, для этого нужен root-доступ, а во-вторых, хотелось бы иметь возможность сделать это программно (да, можно редактировать этот файл программно, сначала перемонтировать файловую систему только для чтения, потом перезагрузить устройство, но это всё равно хак ) .
Оказывается, в Android отсутствует целостная концепция создания киоск-приложений.
Хотелось бы иметь отдельный раздел API, решающий поднятые вопросы.
Хотелось бы получить набор рекомендаций от Google по созданию таких приложений.
Да, я понимаю — создание подобных приложений накладывает на разработчика дополнительную ответственность.
Это открывает путь создателям локер-вирусов.
Но как решили эту проблему разработчики на других платформах? Теги: #Android #киоск #Google #руководства #разработка Android
-
Карты Google 4.1
19 Oct, 24 -
Создать Отдел Тестирования Легко
19 Oct, 24 -
Полупрозрачный Блок С Закругленными Углами.
19 Oct, 24