Run Android as Kiosk or Single Application Mode

Bookmark this on Digg
Bookmark this on Delicious
Share on Facebook
Post to Google Buzz
Bookmark this on Yahoo Bookmark
Share on FriendFeed
[`tweetmeme` not found]

If you are planning to roll out an android application on a tablet for public use. Then running it as a kiosk mode is preferred, we can also call SINGLE APPLICATION MODE.

To achieve it there are couple of ways:

  • Custom build ROM according to your needs. I have not tried my hands over it, as it seems to be time intensive.
  • SureLock from 42gears. It works great but one need to buy License (Single $49.99)
  • Code tweak. It’s not fool proof but can be helpful to run Android in Single Application mode

 

We will talk about “CODE TWEAK” method and guide how to achieve the same. Inside your application code make following changes

Manifest file:

1. Add this to your main activity . This will launch your application when home button is pressed.

<intent-filter>
<action android:name=”android.intent.action.MAIN” />
<category android:name=”android.intent.category.HOME” />
<category android:name=”android.intent.category.DEFAULT” />
</intent-filter>

2. Auto-start your application on Boot by listening to by listening to the android.intent.action.BOOT_COMPLETED. Add this line to your Manifest file

<uses-permission android:name=”android.permission.RECEIVE_BOOT_COMPLETED” />

 

3.  Inside the main Application tag. Add this receiver code like you add a new activity

<receiver android:name=”com.example.android.MyBroastcastReceiver”>
    <intent-filter>
        <action android:name=”android.intent.action.BOOT_COMPLETED” />
    </intent-filter>
</receiver>
 

4. Add a file to your “src/com/example/android/MyBroadcastReceiver.java” and add these lines

package com.example.android;
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
 
public class MyBroadcastReceiver extends BroadcastReceiver {
    @Override
    public void onReceive(Context context, Intent intent) {
        Intent startServiceIntent = new Intent(context, <MAIN>.class);
        context.startService(startServiceIntent);
    }
}

 

Edit <MAIN> to the activity you wish to auto-boot.

 

5. Reboot your tablet/device and it should run in Auto-Boot  Single application mode. It may prompt for default home option to select between “Launcher” and “Your Application”. Select your application and tick the checkbox to make it default selection.

 

One can now browse only device settings and run your application. To exit and run Android Launcher, go to Settings->apps->your application and “Clear Defaults”. Pressing the home button will again prompt for default  home option select Launcher this time and you can access the Android default launcher. I have tested on Android 4.0.3 and it’s working smooth.

 

Ideas/suggestions are welcome.

14 thoughts on “Run Android as Kiosk or Single Application Mode

  1. sounds like an interesting and easy solution if you want to run your own made app, but if the user can access system settings, wouldn’t that allow them to uninstall the app very easily?

    • Sorry for late reply! Yes, you are right, by accessing the system settings one can even change the default home settings or even uninstall it.

      But this solution is a quick win if one needs to demonstrate it as a single app and security breach is not the primary concern.

  2. Hello,

    I’m a bigginer regarding android applications.
    And i’m interested in an applications like surelock.
    A browser wich starts full screen and cannot be closed without entering password.

    This app you are showing us here is doing something like this ?

    If yes how can i use you’re ressources.

  3. Now i’m particularly pleased as well as your publishing skills while well similar to the structure for the blog site. Is the some sort of paid out subject matter or maybe would you transform the idea all by yourself? In any case sustain the wonderful top quality crafting, it is actually rare to look an incredible website exactly like it currently.

  4. Hi There,
    is it possible to have a short app written to put an app into full screen mode with your code?
    by running your code, it hides the system bar and allow for a dual boot into launcher or your app as suggested.
    appreciate your comment on this
    Thx
    Your can also email me if you need any clarification
    Regards
    Allen

    • For full screen mode you might want to try this:

      1
      2
      3
      4
       getWindow().addFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN);
              getWindow().addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);
              getWindow().addFlags(WindowManager.LayoutParams.FLAG_DISMISS_KEYGUARD);
              getWindow().addFlags(WindowManager.LayoutParams.FLAG_SHOW_WHEN_LOCKED);

      These will put your app in full screen mode, disable the back button, show your app even if the screen is locked.

  5. I see you share interesting things here, you can earn some extra cash, your website has
    big potential, for the monetizing method, just search in google – K2 advices how to monetize
    a website

  6. I read a lot of interesting content here. Probably you spend a lot of time writing,
    i know how to save you a lot of time, there is
    an online tool that creates unique, google friendly posts in minutes, just search in google – laranitas
    free content source

  7. I read a lot of interesting posts here. Probably you spend a lot of time writing, i know
    how to save you a lot of time, there is an online tool that creates readable,
    SEO friendly posts in seconds, just type in google – laranitas free content source

  8. Hi! I’ve developed the custom launcher that starts as BOOT_COMPLETED but Iis received.Is there a way to prevent other applications

  9. Sorry, clicked “comment” by accident… I wanted to know if there is a way to prevent other applications who are also listening to “BOOT_COMPLETED” to appear on screen? i.e. give my app/home launcher a top priority? (like all those kids zone apps are doing?)

  10. How can I avoid the device to reset the default launcher after boot-up(restart). My app has been set as default launcher already,but after restart it has been reset. Is there a way to avoid it?

Comments are closed.