Подтвердить что ты не робот

Android: Как заставить устройство запускать только одно приложение?

У меня есть проект клиента, где я должен сделать одно устройство для Android. Клиент не может избежать приложения, разработанного моей компанией. Также клиент не может запустить любое другое приложение, и наше приложение запускается при загрузке устройства. В целом, все, что клиент может сделать с устройством, - запустить наше приложение.

Есть ли другой способ заставить это работать, кроме рутирования устройства, отключения всех системных кнопок и превращения нашего приложения в средство запуска. У меня есть что-то около 400 устройств для этой цели, так что рутирование всех этих устройств будет стоить много времени.

Я также прочитал учебник Google по устройствам COSU, но нашел его очень запутанным https://developer.android.com/work/cosu.html#testing-plan

Пиннинг экрана Android не достаточно хорош, потому что клиент может выйти из приложения. Некоторые могут предложить использовать какое-либо приложение для киоска, например SureLock, но цель моей компании - найти четкое решение для этого без использования сторонних приложений. Также не наша цель - запускать наше приложение через какое-либо приложение для киоска.

Я нашел некоторые сообщения в переполнении стека с похожим вопросом, но не ответом, который я ищу.

Если у кого-то есть советы по этому вопросу, я был бы очень признателен.

4b9b3361

Ответ 1

Одноцелевые устройства, построенные на базе Android, могут быть сложны в реализации. Есть несколько вариантов, но у каждого есть компромиссы.

Как вы упомянули, рутирующие устройства функционально дадут вам то, что вы хотите - однако это займет много времени, поскольку сотни устройств будут рутировать, их сложно обслуживать, и вы (потенциально) создадите проблемы безопасности для своих устройств и приложений.

Другой вариант - использовать режим блокировки Google для устройств COSU [1]. Ссылка там имеет симпатичный рисунок, показывающий особенности режима блокировки задач:

  • 1 приложение закреплено на главном экране
  • только приложения, занесенные в белый список DPC (контроллер политики устройства), могут быть заблокированы
  • Кнопки "Домой" и "Последние" скрыты
  • выйти, вызвав stopLockTask()

Есть некоторые недостатки использования решения Google для этого. Сначала Google рекомендует создать (и для этого поддерживать) совершенно отдельное приложение DPC для запуска в качестве владельца устройства и установки политик [2]. Вы также будете зависеть от Google Play для управления обновлениями приложений, и вам потребуется иметь учетные записи Play, связанные с каждым устройством, которые "используются для идентификации одного устройства, которое не привязано к одному пользователю, для упрощенных правил распространения приложений для каждого устройства". в сценариях в стиле COSU "[3]. Чтобы автоматически получить приложение DPC на устройствах, ваш "DPC должен быть общедоступным в Google Play, и конечный пользователь может установить DPC из мастера настройки устройства, введя специфичный для DPC идентификатор". [3] Вам также потребуется загрузите пользовательское приложение в Google Play [4], что может быть проблемой для тех, кто не хочет, чтобы их приложения были в Play. Пройдя по этому маршруту, вы получите нужные вам функции, но они могут быть сложными, а также довольно тесно связывают вас и ваших клиентов со службами Google/Play и их рабочим процессом.

Вы также можете взглянуть на корпоративные мобильные платформы развертывания, такие как Mason [5]. В вашем случае вы можете за несколько минут создать собственную ОС Android с приложением, заблокированным в режиме киоска (+ другие функции, такие как отключение камеры/смс, удаление приложений и скрытие настроек и т.д.), А затем развернуть ее на всех своих устройствах. удаленно. Mason также поддерживает обновления ОС и приложений, контролируемые вами, если ваши требования изменятся.

Если это звучит полезно, не стесняйтесь обращаться ко мне: trevor @bymason.com

ОТКАЗ ОТ ОТВЕТСТВЕННОСТИ: Я работаю на Мейсона

Ответ 2

Сделайте свое приложение как приложение запуска, определив в файле манифеста.

После этого перейдите к настройке своего мобильного устройства и измените приложение запуска по умолчанию на ваше приложение.

Ответ 3

Я пошел на ту же проблему раньше. Я провел не менее 3 дней, проведя исследования. Я попытался найти множество решений, но нашел нуль.

    How I solve is

    1. Up To JellyBean 
     - Use System Alert Dialog (And make it transparent and small size like 2 * 2 And display in some corner(User can't see it)). User can't press home button If there is system Alert dialog

    2. After JellyBean, This method doesn't work. The user can press the home button even though there is System Alert Dialog.
    so what I did is, start the service on stop and start the same activity again and again(within sec). So user can't see any difference.Don't forget to make activity as single task so that even though you start same activity from service, again and again, new activity will not create (So Ugly way )

    - You can simple make screen full screen. make sure in kiosk mode try to check if the screen is in full-screen mode. if not make it full-screen mode(its not hard to do)

    - other way is to make launcher app but when ever you pressed home button it always asked to choose launcher app. if user mistakenly choose default/ other launcher app, this solution doesnt work

    Good luck