Как создать программное обеспечение, ограничивающее действие пользователя одним приложением на Android?
Я хочу создать приложение для Android и убедиться, что пользователь может использовать только это приложение. (т.е. пользователь не должен иметь возможность открывать или устанавливать любое другое приложение.)
Можно ли навязать такие ограничения на устройстве Android? И если это где я должен начать?
2 ответа
То, что вы ищете, называется "режим киоска" (просто чтобы помочь вам найти подходящий термин).
В стандартном Android API такого нет (по крайней мере, пока нет: см. Редактирование). У пользователя всегда есть возможность нажать кнопку "Домой", чтобы вернуться в приложение "Домой".
Но решения существуют:
- Написание домашнего приложения
Это решение немного слабое (но может соответствовать вашим требованиям?): Разработайте "Домашнее приложение" (это очень просто: просто поместите что-то вроде этого в своем манифесте:
<activity android:name="MyCustomHome"
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.HOME"/>
<category android:name="android.intent.category.DEFAULT" />
</intent-filter>
</activity>
При этом, когда пользователь нажимает кнопку "Домой": ему придется выбрать приложение "Домой" для использования, а если пользователь решит сделать ваше приложение стандартным "Домом": он всегда будет возвращаться к вашему приложению при нажатии кнопки "Домой".
Недостаток: кнопка "Домой" - не единственный способ выйти из текущего приложения, и поэтому это решение не будет на самом деле блокировать пользователя (например: на samsung при пролистывании сверху вниз всегда отображается панель инструментов... и пользователь может сделать что угодно оттуда)
Использование определенных расширений конструктора:
- samsung-knox - это решение для последних устройств samsung (предупреждение: это огромное и сложное решение для обеспечения безопасности предприятий: многие компоненты выполняют много задач, и я думаю, что вам нужно быть партнером samsung, чтобы получить доступ к API в режиме киоска)
- для Motorola: есть приложение EnterpriseHomeScreen, которое можно использовать для запуска собственного приложения в режиме киоска
Я предполагаю, что существуют другие решения для других конструкторов, но я не знаю о них.
EDIT / UPDATE
С Android-5.0-Lollipop: API-интерфейс закрепления экрана позволяет запускать ваше приложение в режиме киоска. Терминология андроида для режима киоска является режимом закрепления экрана.
Чтобы приложение работало в режиме закрепления экрана, вы должны использовать Activity.startLockTask (и Activity.stopLockTask(), чтобы выйти из режима закрепления экрана).
По умолчанию пользователь должен утвердить режим закрепления экрана (всплывающее окно будет отображаться при вызове приложения. startLockTask
).
Если ваше приложение является владельцем устройства: пользователю не будет предложен запрос, и вы сможете перейти в режим закрепления экрана без подтверждения.
Пользователь также может вручную включить режим закрепления экрана для приложения, выбрав: " Настройки"> "Безопасность"> "Закрепление экрана". (в этом случае: пользователь может выйти из режима закрепления экрана, удерживая кнопки Назад и Недавние)
Настройка одноцелевых устройств Страница разработчика Android описала эти вещи, которые вы можете легко узнать больше вещей оттуда.