Dreifaltigkeitsweg 13,89079 Ulm
+49 731 14112018
info@zag1.de
Systemhaus für Computertechnik

Launching Ninox in Kiosk Mode via ManageEngine MDM

Problem

The Ninox Android App (de.ninoxdb.ninox) did not launch properly when added to Kiosk Mode via ManageEngine MDM. The app was correctly whitelisted, but it remained stuck on the splash screen before launching.

Since ManageEngine MDM does not support sending intents, a workaround was needed to automatically open Ninox when clicked.

Solution

A custom Android APK (NinoxLauncher) was created to launch Ninox (de.ninoxdb.ninox.ui.main.home.ActivityHome) when tapped.

Steps to Implement

1. Create a New Android Project

  • Open Android Studio and create a new Empty Activity project.
  • Set the package name to match the organization’s standard (com.example.ninoxlauncher or com.zag1.ninoxlauncher).

2. Modify AndroidManifest.xml

  • Removed unnecessary permissions like RECEIVE_BOOT_COMPLETED since auto-start was not required.
  • Ensured android:exported="true" for Android 12+ compatibility.
  • Defined MainActivity as the launcher.

Final AndroidManifest.xml:

<manifest xmlns:android="http://schemas.android.com/apk/res/android">

    <application
        android:allowBackup="true"
        android:label="Launch Ninox"
        android:icon="@mipmap/ic_launcher"
        android:theme="@style/Theme.AppCompat.Light.NoActionBar">

        <activity
            android:name=".MainActivity"
            android:label="Launch Ninox"
            android:exported="true">
            <intent-filter>
                <action android:name="android.intent.action.MAIN"/>
                <category android:name="android.intent.category.LAUNCHER"/>
            </intent-filter>
        </activity>

    </application>
</manifest>

3. Implement MainActivity.java

  • The app launches Ninox as soon as it is clicked.
  • The launcher closes itself after opening Ninox.

Final MainActivity.java:

package com.example.ninoxlauncher;

import android.content.Intent;
import android.os.Bundle;
import androidx.appcompat.app.AppCompatActivity;

public class MainActivity extends AppCompatActivity {
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        Intent intent = new Intent();
        intent.setClassName("de.ninoxdb.ninox", "de.ninoxdb.ninox.ui.main.home.ActivityHome");
        intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
        startActivity(intent);

        finish();
    }
}

4. Build and Sign the APK

  • Ensured all Gradle tasks were loaded.
  • Built the signed release APK:
    ./gradlew assembleRelease
  • Located the APK in:
    app/build/outputs/apk/release/app-release.apk
  • Renamed it for clarity:
    move "C:\Android_APK\NinoxLauncher\app\build\outputs\apk\release\app-release.apk" "C:\Android_APK\NinoxLauncher.apk"

5. Deploy via ManageEngine MDM

  • Uploaded NinoxLauncher.apk as a custom enterprise app.
  • Assigned it to all required tablets in Kiosk Mode.
  • Ensured Ninox was also whitelisted in Kiosk settings.

Result

The custom launcher now opens Ninox automatically when clicked.
The signed APK works with ManageEngine MDM deployment.


Conclusion

By using a lightweight launcher APK, the limitation of ManageEngine MDM not supporting direct intent launches was bypassed. This solution allows Ninox to work seamlessly in Kiosk Mode while keeping the deployment scalable across multiple tablets.

For similar custom solutions, contact Zag1 Productions.