Search code examples
androidwso2mdmwso2-iot

Customize/Restrict Android OS within 2 Applications


We need to modify existing Android tablet with 6.0 Marshmallow version, to remove all the interactive system applications and other applications and just make it run with 2 applications.

We were thinking as of now with two solutions either to customize the ROM and create the new one. Or two use COSU solution with Enterprise Mobility Management APIs so that user will be restricted to certain white listed Applications only.

Please suggest the feasible solution to go with.


Solution

  • The simplest approach is probably to use Google's Android Management API, it's compatible with all Android devices running Android 5.1 or above.

    To lock the device on one app, or on multiple app, you define a kiosk policy like below:

    "applications": [
     {
       "packageName": "com.example.app",
       "installType": "FORCE_INSTALLED",
       "lockTaskAllowed": true,
       "defaultPermissionPolicy": "GRANT",
     },
     {
       "packageName": "com.example.app2",
       "installType": "FORCE_INSTALLED",
       "lockTaskAllowed": true,
       "defaultPermissionPolicy": "GRANT",
     }
    "persistentPreferredActivities": [
      {
        "receiverActivity": "com.example.app/.com.example.app.MainActivity",
        "actions": [
          "android.intent.action.MAIN"
        ],
        "categories": [
          "android.intent.category.HOME",
          "android.intent.category.DEFAULT"
        ]
      }
    ]
    

    If there is no link from one app to the other you can implement a very simple custom launcher to allow switching apps, and configure the policy as below:

    "applications": [
     {
       "packageName": "com.custom.launcher",
       "installType": "FORCE_INSTALLED",
       "lockTaskAllowed": true,
       "defaultPermissionPolicy": "GRANT",
     },
     {
       "packageName": "com.example.app",
       "installType": "FORCE_INSTALLED",
       "lockTaskAllowed": true,
       "defaultPermissionPolicy": "GRANT",
     },
     {
       "packageName": "com.example.app2",
       "installType": "FORCE_INSTALLED",
       "lockTaskAllowed": true,
       "defaultPermissionPolicy": "GRANT",
     }
    "persistentPreferredActivities": [
      {
        "receiverActivity": "com.custom.launcher/.com.example.app.MainActivity",
        "actions": [
          "android.intent.action.MAIN"
        ],
        "categories": [
          "android.intent.category.HOME",
          "android.intent.category.DEFAULT"
        ]
      }
    ]