Add internal Android and iOS applications

To add internal Android or iOS apps, complete the following steps:

  1. Navigate to Application.
  2. On the Application page, click Add.
  3. On the Select Application Type page, select Internal and click OK.
  4. On the Add Application page, enter the following information:
    • Platform — Select the mobile OS.
    • Application File — Click and select either an APK file for an Android application or an IPA file for an iOS application.
      NOTE — For apps with the same package name, KM allows IT admins to register these apps as duplicate entries for each internal and Managed Google Play app type. This feature means that in the Application menu, Internal and MGP apps can now have the same app package name at the same time.
    • Name — Enter the application name.
    • Version — The retrieved application version is listed as the value of this field. If there is no value, - is listed as the value.
    • Package Name (Android) — The retrieved package name is displayed. If there is no value, - is displayed.
    • Bundle ID (iOS) — The retrieved bundle ID for the application is displayed.
    • Bundle Name (iOS) — The retrieved bundle name is displayed. If there is no value, - is displayed.
    • URL Scheme (iOS) — The retrieved URL scheme is displayed. If there is no value, - is displayed.
    • Platform & Source — The application's platform and source are displayed.
    • Type — The application type is displayed as Internal.
    • Category — Select the application category. If you click Manage Category, you can add or modify application categories.
    • App Wrapper (Android) — Reconfigure and save the application so that security policies, such as text copy and screen capture, can be controlled in the Admin Portal.
    • Unassign Option — Check if you want to uninstall the app from the device upon unassignment.
    • Managed App Setting (iOS) — Select Yes if you are adding an application that is designed to change the Mobile Device Management (MDM) settings of applications on iOS devices.
    • Key & Value (iOS) — If you selected Yes in Managed App Setting, click Add and enter the key and value of a MDM setting you want to change. You can add one key and its value at a time.
    NOTE — Ask the application developers about the key and value for the MDM settings. For example, if you want to add the ManagedAppConfig application and set its default URL to, the key is the server URL and the value is
    • Description — Enter a description for the application.
    • Icon — Select the application icon image.
    • Screenshot — Select screenshots of the application to provide a preview for Android device users.
  5. Do one of the following:
    • Click Save to save the information and return to the Application list.
    • Click Save & Assign to save this information and proceed to assign the information. Continue on to the next step.
  6. Assign the application. For more information, see Assigning internal applications.

App wrapping

App Wrapper also allows you to insert code to control security policies for internal applications used by customers. You can then reconfigure the applications without having to modify the source code. Another advantage of using App Wrapper is that it also allows you to insert code that lets you control security policies for internal applications used by customers and then reconfigure the applications, without having to modify the source code. Thus, you can add new functions in a short amount of time, even if you aren't knowledgeable in platform development.

Note the following while using the Knox Manage App Wrapper:

  • Conversion using the Knox Manage App Wrapper is limited to internal applications. There may be copyright issues when converting public applications.
  • The security logic application that checks the signing key may not function normally.

The functions that you can configure using App Wrapper are screen capture, screen lock, copy and paste (text only), and registration of INI configuration files. The existing and wrapped internal applications are distinguished by different icons on the user device.

  • Screen lock — If the Knox Manage agent's screen is locked because of the Knox Manage agent's Lock device after (second) value set in Profile, then the wrapped internal applications are also locked. Therefore, you need to enter the screen lock password and unlock the screen of the Knox Manage agent or the wrapped internal applications if you want to use them.
  • Configuration INI file — You can register a configuration file in wrapped applications and configure additional control settings. Register wrapped applications and an INI configuration file in Profile, and apply them to a device. Then, the INI configuration file is saved to the device's data storage. For more information about how to register the INI file required for a wrapped application, see Assigning internal applications.

To use the INI file, you need to add the source code to read the INI file from the internal application. For more information, see the next topic.

Reading the configuration file

To use the value of the INI configuration file in internal app, you need to look up the path and file name of the configuration file and add the source that reads the string.

The code that is required to read a configuration file is as follows.

private String readINIFile(String fileName) throws FileNotFoundException, IOException, Exception {
    StringBuffer sb = new StringBuffer();
    BufferedReader br = null;
    int ch = 0;
    br = new BufferedReader(new FileReader(fileName));
    while((ch = != -1) {
        sb.append((char) ch);
    return sb.toString();
// Path: /data/data/[packagename]/files/ini
private String getINIFolder(Context context) {
    return context.getFilesDir() + File.separator + "ini";
// ini File Name: [packagename].ini
private String getINIFileName(Context context) {
    return context.getPackageName() + "." + "ini";
  • The getINIFolder function searches for the directory path where the configuration file is saved.
  • The getINIFileName function searches for the name of the {PackageName}.ini file.
  • The readINIFile function reads the configuration file through the file path received as a parameter value, and then sends a text value.

The code that calls the readINIFile() function after determining the existence of the file is as follows:

btnIniRead.setON-CLICKListener(new ON-CLICKListener() {
        public void ON-CLICK(View v) {
            String text = null;
            String filePath = getINIFolder(mContext) + File.separator + getINIFileName(mContext);
            File file = new File(filePath);
            if(file.exists()) {
                try {
                    text = readINIFile(filePath);
                } catch (FileNotFoundException e) {
                    text = "FileNotFoundException";
                } catch (IOException e) {
                    text = "IOException";
                } catch (Exception e) {
                    text = "Exception";
            } else {
                text = "File Not Found";
  • The full path where you can save a configuration file is — getINIFolder(mContext) + File.separator + getINIFileName(mContext)