Вы на 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