As highlighted in the first part of our series of articles, when a customer wants to ensure that users cannot access other applications on a mobile device, implementing Kiosk Mode is the solution. But what exactly is Kiosk Mode, and what options do we have to run an app in Kiosk Mode? What are the benefits of Zebra's free Enterprise Home Screen application? You'll find the answers in this article!

What exactly is Kiosk Mode?

Nowadays, we often encounter devices that seem to have only one application running, and it is impossible to exit this application. In such cases, we say that the application is running in Kiosk mode. So, what exactly is Kiosk mode? Kiosk mode restricts the user's access to the device's functions, applications, and settings to ensure that they can only use a single or a few designated applications.
This method is primarily used in industrial, corporate and public self-service systems where the device must be optimised to perform a specific task, minimising user error or unwanted activity. For example, this setup prevents employees from using social media applications on dedicated devices designed to facilitate workflow.
The goal is to allow only a specific application or function to be accessible on the device, ensuring that users cannot change system-level settings or access other applications. This keeps the system stable and secure while simplifying the user experience.
In Kiosk mode, users can only see and use the selected application(s). This makes the entire Android system user interface (e.g. Home, Recent Apps buttons) inaccessible. Users cannot change device settings (e.g. Wi-Fi, Bluetooth, screen brightness), exit the application or switch to another application.

Use cases

  • Self-service terminals: In airports, train stations and shopping malls, self-service machines allow users to book tickets, access information or make payments in kiosk mode.
  • Hospitality: Self-service terminals in restaurants and fast food chains allow customers to place orders in kiosk mode.
  • Enterprise devices: Mobile devices such as smartphones and tablets are used by employees in Kiosk Mode to access only the functions they need for work.
With Kiosk Mode, organisations can ensure that their devices remain dedicated to specific purposes, providing a secure and streamlined experience.

What are the options for implementing Android Kiosk Mode?

Lock Task Mode (Built-in feature in Android 5.0)

This is an official Android API that allows us to enable Kiosk Mode with a built-in solution.
Benefits:
  • Easy to implement
  • Completely native; no need for external applications
  • Allows control over specific features, such as disabling the home or back buttons
Disadvantages:
  • Only works on Android 5.0 or higher

App pinning

This is a basic Android setting that allows users to 'pin' a specific app, preventing them from easily exiting it.
Benefits:
  • Built-in feature; no development required
  • Easy to enable and disable from system settings
Disadvantages:
  • Only one application can be pinned, providing a limited kiosk experience
  • Users can easily opt-out if they know the unlocking process

Third-party applications

Many applications are available to help implement Kiosk mode. This category includes Zebra's Enterprise Home Screen (EHS), which will be discussed in more detail later in this article.
Advantages:
  • Provides more functionality than native solutions
  • Provides detailed control over device settings and functionality
  • Allows centralised management options
Disadvantages:
  • May require additional configuration
  • Some applications, such as EHS, can only be used on certain manufacturers' devices

Options for implementing Kiosk Mode on Zebra devices

When it comes to Zebra devices, there are several applications available to help set up Kiosk Mode.
  • Enterprise Home Screen (EHS): This is one of the most user-friendly solutions.
  • StageNow: Similar to EHS, StageNow allows you to place the device in kiosk mode but also supports more complex configurations, such as customising Wi-Fi, security and application settings.
  • Zebra Mobility Extensions (MX): MX gives you direct access to device-level controls, including fine-tuning the user interface and security. This is the most advanced option.

Enterprise Home Screen (EHS)

The Zebra Enterprise Home Screen (EHS) replaces the entire user interface of the device with a customised interface that allows access only to applications and features specified by the administrator. This enables a kiosk mode where users can only access authorised applications and all other system settings, functions and applications are hidden or restricted.
The first step is to download the Enterprise Home Screen application from the Play Store, as this application is not normally pre-installed on Zebra devices. The app becomes the default Android launcher and home screen. When you launch it for the first time, you will see a pop-up where you can select the home screen app you want and choose whether to make it the default.
Note that if you select EHS as the home app and tick the option to make this selection permanent, you may lock yourself out of the device, as file system access and USB debugging will no longer be available. This is important as some settings can only be configured by editing the EHS configuration XML file.

What is the configuration file and how do we access it?

The configuration file, called enterprisehomescreen.xml, can be retrieved from the device after the application has been installed. The easiest way to retrieve it is to use an ADB command.
adb pull /enterprise/usr/enterprisehomescreen.xml
>
Once downloaded and opened, the file will contain configurations similar to the following:
<?xml version="1.0" encoding="UTF-8"?><config>
	<applications>		
		<application label="DWDemo" package="com.symbol.datawedge" activity="com.symbol.datawedge.DWDemoActivity"/>		
  </applications>
	<tools>
		<application label="DWDemo" package="com.symbol.datawedge" activity="com.symbol.datawedge.DWDemoActivity"/>		
	</tools>
	<passwords>
		<admin attempts="1"/>
	</passwords>		
	<preferences>
		<title>Enterprise Home Screen</title>
		<icon_label_background_color>#00FFFFFF</icon_label_background_color>
		<icon_label_text_color>#FFFFFFFF</icon_label_text_color>
		<orientation/>
		<auto_launch_enable>0</auto_launch_enable>
		<service_auto_launch_enable>0</service_auto_launch_enable>
		<wallpaper/>
		<kiosk_mode_enabled>0</kiosk_mode_enabled>
		<keyguard_camera_disabled>1</keyguard_camera_disabled>
		<keyguard_search_disabled>1</keyguard_search_disabled>		
		<usb_debugging_disabled>1</usb_debugging_disabled>
		<system_settings_restricted>1</system_settings_restricted>
		<recent_apps_button_disabled>1</recent_apps_button_disabled>
		<recent_apps_access_disabled>1</recent_apps_access_disabled>
		<wireless_info>
			<show_ip_address>0</show_ip_address>
			<show_mac_address>0</show_mac_address>
			<show_bssid>0</show_bssid>
			<show_ssid>0</show_ssid>
			<show_scan_result>0</show_scan_result>
		</wireless_info>
		<screen_blanking>
			<blanking_enabled>0</blanking_enabled>
			<speed_threshold>10</speed_threshold>
			<blanking_mode>1</blanking_mode>
		</screen_blanking>
	</preferences>
</config>
The configuration options include but are not limited to, the kiosk_mode_enabled and usb_debugging_disabled properties. These settings are self-explanatory: kiosk_mode_enabled enables kiosk mode and usb_debugging_disabled disables USB debugging. The value "1" means true, so in this example, we see that USB debugging is disabled by default.

Enabling Kiosk Mode

The key parts of the configuration snippet are the <application> tags within the <kiosk> and <applications> tags. Here you specify the application you want to run in Kiosk mode.
Another critical setting is to change the value of <kiosk_mode_enabled> to "1" and <usb_debugging_disabled> to "0".
<?xml version="1.0" encoding="UTF-8"?><config>
	<kiosk>
        <application label="MyApplication" package="com.my.application" activity="com.my.application.RoutingActivity"/>
	</kiosk>
	<applications>		
		<application label="DWDemo" package="com.symbol.datawedge" activity="com.symbol.datawedge.DWDemoActivity"/>		
	  <application label="MyApplication" package="com.my.applicatio" activity="com.my.application.RoutingActivity"/>
  </applications>
	<tools>
		<application label="DWDemo" package="com.symbol.datawedge" activity="com.symbol.datawedge.DWDemoActivity"/>		
	</tools>
	<passwords>
		<admin attempts="1"/>
	</passwords>		
	<preferences>
		<title>Enterprise Home Screen</title>
		<icon_label_background_color>#00FFFFFF</icon_label_background_color>
		<icon_label_text_color>#FFFFFFFF</icon_label_text_color>
		<orientation/>
		<auto_launch_enable>0</auto_launch_enable>
		<service_auto_launch_enable>0</service_auto_launch_enable>
		<wallpaper/>
		<kiosk_mode_enabled>1</kiosk_mode_enabled>
		<keyguard_camera_disabled>1</keyguard_camera_disabled>
		<keyguard_search_disabled>1</keyguard_search_disabled>		
		<usb_debugging_disabled>0</usb_debugging_disabled>
		<system_settings_restricted>1</system_settings_restricted>
		<recent_apps_button_disabled>1</recent_apps_button_disabled>
		<recent_apps_access_disabled>1</recent_apps_access_disabled>
		<wireless_info>
			<show_ip_address>0</show_ip_address>
			<show_mac_address>0</show_mac_address>
			<show_bssid>0</show_bssid>
			<show_ssid>0</show_ssid>
			<show_scan_result>0</show_scan_result>
		</wireless_info>
		<screen_blanking>
			<blanking_enabled>0</blanking_enabled>
			<speed_threshold>10</speed_threshold>
			<blanking_mode>1</blanking_mode>
		</screen_blanking>
	</preferences>
</config>
What happens if <usb_debugging_disabled> remains set to 1 and we overwrite the config file on the device? The answer is factory reset. So if we want to make changes or disable Kiosk Mode later, and we haven't set up remote access software (such as StageNow), a factory reset will be necessary to regain access to the device.
After configuring the file, overwrite it on the device and you're done - the application will now run in Kiosk Mode.
adb shell
mv /sdcard/enterprisehomescreen.xml /enterprise/usr/enterprisehomescreen.xml 

Restrict access without kiosk mode

If you don't need full kiosk mode, but simply want to restrict access to certain applications and settings, EHS can still be useful. It supports an Admin login and a User login. In Admin mode, you can choose which applications are available and these will remain accessible when you switch to User mode. This setup is often sufficient in corporate environments where it's necessary to restrict which applications and settings employees can access on work devices such as phones and tablets.
Learn how Zebra devices simplify Android app development for specific hardware, including label printing, QR code scanning, offline functionality and PDF creator.
At LogiNet, we assist you with both native and cross-platform mobile application development. Our professional experts are proficient in various technologies: creating native iOS and Android applications using Kotlin and Swift, and cross-platform solutions using Flutter. Our mobile development team also participates in resource outsourcing projects. Learn more about our mobile solutions!

Let's talk about

your project

Drop us a message about your digital product development project and we will get back to you within 2 days.
We'd love to hear the details about your ideas and goals, so that our experts can guide you from the first meeting.
John Radford
Client Services Director UK