MaxGo Kiosk Browser


To top

Kiosk Browser for Nautiz X2, X4, X8 and X9

Based on Chrome Version 50 / xWalk 120.50.533.12


The latest version is 1.9.0 – For changes, check the release notes here.


  1. Download the latest APK from here.
  2. Copy APK to the unit and open it using the Filemanager in the Tools app.
  3. Open the Kiosk Settings and enter the PIN (default is 2580).
  4. Change the default homepage and pin and exit using the back button.
  5. To lock down the app completely you need to open Settings > Accessibility > Kiosk Service and enable the service before opening the KioskBrowser.


To top

Exiting the app

The default settings don’t allow the user to exit the app with the back, home, and recent apps buttons. To exit the app you need to use a key combination and a PIN.

On the Nautiz X4 and Nautiz X8, the key combination is F1, F2, F3, and F2. On the Nautix X2, you need to use the side keys and press, top-left, top-right, bottom-left, and top-right.
When asked for a PIN, use the value you have set up in the settings or 2580 as the default value.

Hardware keys settings

The settings at Hardware Keys > Block keys and System keys are only used on the Nautiz X4 and Nautiz X8 and don’t have any effect on other hardware.

Recent apps lockdown

On the Nautiz X2 (and other Android 5+ devices) you’ll have to enable the Kiosk Service at Settings > Accessibility to block the recent apps key.


Set the page you want to load when the app opens. Hint: The KioskBrowser will not prevent the user from leaving this domain.

This is the pin that is needed to exit the app with the “Exit with PIN prompt” option and to open the settings.

Start after boot
Enable this to start the app after the system is started (Autostart).

Hide the status bar
Hide the Android status bar at the top. Hint: Regardless of this setting, the app will prevent the user from pulling down the status bar.

Block touch input
Block all touch interaction on the website.

Hardware Keys
Different settings for hardware keys on Nautiz X4 and Nautiz X8 as well as settings for long press and patterns.

Block keys
Block/disable hardware keys depending on the System keys options on Nautiz X4 and Nautiz X8.

F1-F4, Menu Longspress
Set an event to occur after long-pressing a hardware key.

F1>F2>F3>F2, F1>F3>F2>F3 Action
Set an event to occur after the key pattern was pressed.

Use custom User-Agent
Enable the browser to send a different HTTP User-Agent to the server on each request.

Custom User-Agent
Define the string to be sent as the HTTP User-Agent when the “Use custom User-Agent” option is enabled.

Progressbar color
Change the color for the loading indicator that is shown on the top edge of the window.

Force speaker output
Force all output from the browser page through the speaker even if a headset is connected.

Dialog sound
This sound is used for Javascript Alert and Prompt dialogs.

Scan success sound
This sound is played when a barcode or NFC tag has been read successfully.

Scan failure sound
This sound is played when an NFC tag can’t be read or the scanner timeout is hit.

Settings for NFC and Mifare tags.

Enable NFC
Enables the NFC functionality on supported devices.

Prefix, Suffix
Set a prefix or suffix to be sent with the NFC data.

Read block data
Enable to read Mifare block data.

Mifare Key A
Set the key for encrypted sectors or use the default FFFFFFFFFFFF key.

Mifare Block
Set the block index to read value. Hint: The key must be provided of the sector this block is located in.

App Version
Shows the current app version and version code.

XWalk Version
Shows the version of the xWalk library used to render the web pages.


To top

Setting a scan result handler

<meta http-equiv="ScannerNavigate" content="javascript:OnScan('%s', '%s', '%s');">
<!-- or -->
<meta http-equiv="ScannerNavigate" content="javascript:OnScan('%s', '%s', '%s', '%s', '%s');">

(1) barcode data, (2) symbology type, and (3) timestamp will be passed to a function with 3 arguments.
(1) barcode data, (2) source scanner name, (3) symbology type, (4) timestamp, and (5) barcode length will be passed to a function with 5 arguments. The source scanner will always be “0”.

Setting an NFC result handler

<meta http-equiv="NfcNavigate" content="javascript:OnScan('%s');">

(1) Tag id or block data depending on the setting


To top


This API provides methods to interact with the app itself.

// Asked for the PIN and exits the app if the correct PIN was entered
// Exits the app

Barcode Scanner API

Since version 1.5.0, the app provides a JS interface to interact with the scanner. The interface exposes the following methods.

// Starts the scanner with it's current settings
// Stops the current scan if running
// Enables or disables the hardware scan trigger
// This setting does not affect the .startScan() function
Scanner.setTriggerEnabled(bool enabled);


// Enables or disables the NFC reader
Nfc.setEnabled(bool enabled);

Bluetooth API

Since version 1.8.0, the app provides a JS interface to interact with the Bluetooth module. Since almost all the calls are asynchronous, a callback function is needed to receive the results.

This callback function needs to be provided as a string of the function name. This function will be called with 2 parameters in both a successful and error case. The first parameter is the error. This is set to false if the operation was successful or will contain the error message if an error occurred. The 2nd parameter is a message which is always and can be used to provide feedback on the operation.

// Enables or disables the Bluetooth radio
Bluetooth.setEnabled(boolean enabled, String callback)
// Connects to a nearby device via the mac address.
// This devices should be paired in the system first.
// Otherwise the pairing notification will be shown
// which might not be accessible in kiosk-mode.
Bluetooth.connect(String mac, String callback)
// Sends the data to the connected Bluetooth device
Bluetooth.write(String data, String callback)
// Disconnects from the Bluetooth device
Bluetooth.disconnect(String callback)
// Returns a JSON array with the keys "address" and "name" set
// for each paired device
// Note: This is returned as a string so youΓÇÖll have to use JSON.parse()
// to receive the actual array object

Intent API

Since version 1.8.0, you can trigger any intent from action and receive the returned data in a callback.
The example below shows how to use a camera-based Barcode Scanner using this API.

function onResultCallback(requestCode, rawJson){
if(requestCode != 1234) return; 
var data = JSON.parse(rawJson);
var content = data.SCAN_RESULT;
document.form1.scan1.value = content;

function scan(){
Intent.start('', 1234, 'onResultCallback');

You can download the demo page that shows at the start of the app from here (use right-click > save as if your browser opens the page directly).

If you want to change back to this page, set the URL to “about:demo” (without any leading http(s)://).

Was this article helpful?
Copyright © 2023 Handheld Group. All rights reserved.
Images, texts and other material downloaded from the Handheld web pages may not be reproduced in any form, without prior written permission from the Handheld Group.
Algiz® and Nautiz® are registered trademarks of Handheld Group AB. l Privacy Policy l Device Policy l GDPR l Legal