Режим киоска для Chrome или Firefox

Мне нужно написать программу запуска киоска для ряда устройств Android. Предполагается запустить Chrome или Firefox, показывая определенную веб-страницу в полноэкранном режиме. Эта страница уже вызывает API HTML5 requestFullScreen(). , но это не работает, потому что этот вызов исходит не от события, сгенерированного пользователем, и поэтому отклоняется браузером по соображениям безопасности .

Я выполнил поиск и нашел следующие вопросы:

Оба этих ответа в конечном итоге указывают на существующие приложения или браузеры, некоторые из них делают именно то, что я пытаюсь сделать. Это кажется излишеством, так как я уже использую приложение, чтобы заставить это работать. И я не могу использовать специальный браузер, как предложено здесь, потому что основные браузеры, такие как Firefox или Chrome, более надежны с точки зрения обновлений и поддерживаемых функций.

Но в то же время тот факт, что эти приложения существуют, означает, что все, что мне нужно сделать, выполнимо. Из Блокировка браузера киоска:

[Pro функции]

Полноэкранный режим / Скрытая панель инструментов

У меня такой вопрос: какие API-интерфейсы Android они используют для этого? Есть ли что-то, что мне не хватает на данный момент? Какие страницы документации, руководства или статьи мне следует искать?

Спасибо


person aexl    schedule 25.03.2016    source источник


Ответы (2)


У меня аналогичная проблема с коммерческим приложением, работающим либо в системе Linux, либо в ОС Windows. Это приложение создано для работы в браузере. Раньше мы открывали окно браузера, которое мы настроили. и закрытие главного окна. : * скрытие панели меню. * скрытие панели кнопок. * сохранение кнопок закрытия/опускания окна

Полноэкранный режим использовать нельзя, так как он скрывает кнопки окна.

Сегодня появляется все больше и больше браузерных приложений (angularjs и подобные приложения...).

Я обнаружил, что приложение Atom может сделать это, используя chromium.

Означает ли это, что мне нужно встроить веб-браузер с настройкой моего приложения ??? И придерживайтесь какого-нибудь браузера (например, хрома), хотя мое приложение совместимо со многими файлами .

person sancelot    schedule 18.09.2017
comment
после некоторых исследований я обнаружил, что в некоторых браузерах есть режим приложения. Исторически сложилось так, что Prism и Mozilla Chromeless для Firefox. Это устарело .... в хроме есть режим приложения, если вы запустите его с переключателем --app в командной строке. Я нашел несколько переключателей здесь peter.sh/experiments/chromium-command-line-switches< /а> - person sancelot; 18.09.2017

Вы на 100% должны использовать Chrome или Firefox?

Легче сделать то, что вы говорите, разработав киоск-приложение с пользовательским WebView, которое показывает только ту веб-страницу, которую вы хотите показать. Я могу ошибаться в этом, но я считаю, что WebViews на Android технически являются Chrome (или чем-то подобным) на серверной части, но в любом случае, используя один из них, я сомневаюсь, что вам нужно будет беспокоиться об обновлениях. Однако это не то, о чем вы просили... поэтому я опишу решение с использованием Chrome или Firefox. Мое решение также означает, что вам нужен доступ к устройствам, на которые вы загружаете свое программное обеспечение, а не к коммерческому приложению, потому что вам нужен ADB.

Вполне возможно настроить киоск-приложение в Android, чтобы разрешить использование только Chrome или Firefox, и это легко сделать, если вы установите приложение, которое вы загружаете на устройство (для выполнения любой необходимой вам задачи), в качестве владельца устройства. Это легко сделать через ADB с помощью командной строки или терминала Android Studio.

Просто к вашему сведению ... Я не уверен, что установка «настоящего» киоск-приложения возможна без привилегий владельца устройства, вы не можете фактически заблокировать приложение на экране без него. В случае, который я описываю, вы получаете настоящую реализацию киоска с использованием владельца устройства, а не изящную работу, которая имитирует эту функциональность, как большинство приложений, которые вы видите на рынке, однако я также могу поспорить, что эти приложения имеют некоторый тип привилегии администратора устройства, которые менее сильны, чем права владельца устройства, но все же мощные.

«Настоящий» способ, который я описываю, будет выполняться через ADB (или командную строку) с фрагментом, аналогичным следующей команде (я использовал это в недавнем корпоративном приложении, которое очень похоже на то, что вы описываете):

adb shell dpm set-device-owner 
com.viatechsystems.guestservices/android.app.admin.DeviceAdminReceiver
  • Вы должны заменить «com.viatechsystems.guestservices» именем пакета вашего киоск-приложения. Вы получите подтверждающее сообщение на консоли после того, как владелец устройства будет установлен через ADB, но поймите, что эта команда может завершиться ошибкой, если владелец устройства уже установлен каким-либо другим способом. Чтобы решить эту проблему, перезагрузите устройство и повторите команду, и все будет готово.

Что касается блокировки вашего приложения (или в вашем случае Chrome или Firefox, просто сначала узнайте, какое имя пакета) в режиме киоска после того, как был установлен владелец устройства, вам нужно запустить этот фрагмент или что-то подобное в вашем приложении. основная деятельность:

DevicePolicyManager DPM = 
(DevicePolicyManager)getSystemService(Context.DEVICE_POLICY_SERVICE);

ComponentName ownerName = new 
ComponentName(WHATEVER_CLASS_YOU_USE_TO_DISABLE_APPS.this 
DeviceAdminReceiver.class);

//this.getPackageName() GETS CURRENT PACKAGE
String[] packages = {
//THIS IS CURRENT APP
this.getPackageName()
//YOU NEED TO USE CHROME OR FIREFOX PACKAGE 
//NAME HERE INSTEAD FOR WHAT YOU WANT
};
DPM.setLockTaskPackages(ownerName, packages);
startLockTask(); //LOCKS PACKAGES IN KIOSK MODE

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

Для этого вам нужно скрыть/отключить приложения с привилегиями владельца устройства, которые вы получили ранее, когда вы настроили свое пользовательское приложение для блокировки Chrome, Firefox или чего-либо еще в режиме киоска.

Я могу рассказать вам, как найти все имена пакетов на устройстве, на которое вы загружаете свое приложение, но я предполагаю, что вы можете понять это... подсказка, если у вас есть проблемы, вы используете диспетчер пакетов Android.

В этом случае пакет/приложение, которое мы хотим скрыть, называется «com.example.HideThisPackage», просто замените его любым именем пакета, которое вы хотите скрыть/отключить в качестве владельца устройства.

//THIS VARIABLE AGAIN
DevicePolicyManager DPM = 
(DevicePolicyManager)getSystemService(Context.DEVICE_POLICY_SERVICE);

//THIS VARIABLE AGAIN
ComponentName ownerName = new 
ComponentName(WHATEVER_CLASS_YOU_USE_TO_DISABLE_APPS.this 
DeviceAdminReceiver.class);

//USED TO HIDE INSTALLED APPS AFTER DEVICE OWNER ENABLED
DPM.setApplicationHidden(ownerName, com.example.HideThisPackage, true);

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

person ViaTech    schedule 11.10.2017