2016-03-25 3 views
1

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

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

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

Но в то же время тот факт, что эти приложения существуют, означает, что все, что мне нужно сделать, это хорошо, выполнимо. От Kiosk Browser Lockdown:

[Pro] функции

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

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

Спасибо

ответ

0

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

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

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

Я нашел приложение Atom для этого, используя хром.

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

+0

после некоторых исследований я обнаружил, что в некоторых браузерах есть «режим приложения». Исторически сложилось, что Prism и Mozilla без хрома для firefox. Это было устаревшим .... хром получил «режим приложения», если вы запустили его с ключом -app на cmdline. Здесь я нашел несколько переключателей https://peter.sh/experiments/chromium-command-line-switches/ – sancelot

0

У вас есть 100% использование Chrome или Firefox?

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

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

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

«Реальный» способ, который я опишу, будет выполнен через 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); 

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

Смежные вопросы