Intención personalizada de Android

Utilice la función de intent personalizada de Android para preconfigurar los ajustes y crear flujos de trabajo personalizados para abrir sólo partes específicas de la aplicación Settings en un dispositivo Android en Kiosk mode.

Kiosk mode en los dispositivos Android va en aumento. Estos dispositivos en modo quiosco se encuentran en un estado de bloqueo en el que los usuarios no tienen acceso a ajustes como biometría, contraseña, NFC, etc., que son necesarios para el trabajo diario. La capacidad de intenciones personalizadas de Android proporciona flexibilidad para controlar los ajustes que se exponen a los usuarios. Por ejemplo, abrir la pantalla de inscripción biométrica desde el dispositivo sin añadir la aplicación Configuración a una lista de permitidos en la política del modo Quiosco de COSU.

Configurar la intención personalizada de Android

  1. En la página de inicio del portal IBM® MaaS360®, haga clic en Seguridad > Políticas.
  2. Seleccione una política de Android MDM Policy.
  3. Vaya a Ajustes de configuración > Ajustes de Android Enterprise > Kiosk Experience Designer > Activar modo quiosco.
  4. Vaya a Avanzado > Lanzamiento personalizado y seleccione la casilla Añadir elemento de lanzamiento personalizado.
  5. Haga clic en Añadir y configure lo siguiente.
    Valor de política Descripción Dispositivos compatibles
    Añadir elemento de inicio personalizado

    Si esta opción está activada, puede añadir un lanzamiento personalizado utilizando la función de intent personalizada de Android. Puede añadir ajustes o aplicaciones utilizando código JSON en un dispositivo Android en Kiosk mode.

    Importante:
    • Habilitar esta configuración puede ayudar a los usuarios a ir a otras secciones relevantes relacionadas con esta configuración en el dispositivo.
    • Esta función es aplicable a dispositivos con la aplicación Android versión 8.60 o posterior.

    Puede añadir varios elementos de lanzamiento personalizados, cada uno de los cuales contendrá los siguientes ajustes.

    • Ubicación en el dispositivo
      En función de la ubicación del elemento que haya seleccionado, el elemento de inicio personalizado se muestra en la sección Configuración del dispositivo u Otros accesos directos de la lista de menús del dispositivo.
    • Nombre
      Puede añadir un nombre de elemento de lanzamiento personalizado en varias configuraciones regionales. El nombre del elemento se mostrará en el dispositivo con la configuración regional correspondiente a la aplicación Quiosco. Puede introducir el par clave-valor donde clave representa la configuración regional para la visualización del nombre del artículo y valor representa el nombre del artículo.
    • Descripción (opcional)
      Puede añadir una descripción relevante para un elemento de lanzamiento personalizado en varias localizaciones. Puede introducir el par clave-valor donde clave representa la configuración regional para la visualización de la descripción del artículo y valor representa la descripción del artículo. La descripción se muestra en Kiosk con la configuración regional correspondiente a la aplicación Kiosk.
    • Intención personalizada
      Para definir una intent personalizada de Android, debe proporcionar el código JSON que especifica los valores de política necesarios.
    Android 6.0 y posteriores (DO)

Formato de código JSON

Las siguientes tablas muestran el formato de código JSON de ejemplo para los campos de nivel superior y los campos adicionales.

Campos de nivel superior
Nombre de campo Tipo Ejemplos Descripción

acción

Serie

"action": "android.intent.action.VIEW"
"action": "android.intent.action.EDIT"

La acción general a realizar. Por ejemplo, ACTION_VIEW, ACTION_EDIT, ACTION_MAINetc.

datos

Serie

"data": "https://www.company.com#data"

Los datos sobre los que operar. Por ejemplo, el registro de una persona en la base de datos de contactos, expresado como un Uri.

packageName

Serie

"packageName": "com.mycompany.myapp"

Limite la acción para abrir sólo un paquete específico.

categorías

Serie

Matriz

"categories": [
    "android.intent.category.LAUNCHER",
    "android.intent.category.BROWSABLE"
]
Información adicional sobre la acción a ejecutar. Por ejemplo:
  • CATEGORY_LAUNCHER indica una actividad que debe aparecer en la aplicación Kiosk Launcher del dispositivo como aplicación de nivel superior.
  • CATEGORY_ALTERNATIVE indica una actividad que debe incluirse en una lista de acciones alternativas que el usuario puede realizar sobre los datos.

Tipo

Serie

"type": "text/xml"

Especifica un tipo MIME explícito para los datos de la intent. El tipo se deduce de los propios datos. Al establecer este atributo, se desactiva esa evaluación y se impone el uso de un tipo explícito.

componente

Objecto

"component": {
    "packageName": "com.mycompany.myapp",
    "className": "com.mycompany.myapp.ui.MyActivity"
}

Especifica un nombre explícito de una clase de componente que se utilizará para la intención. El componente se determina a partir del resto de información de la intención, como la acción, los datos o el tipo, y las categorías, emparejándolo con un componente adecuado. Si se establece este atributo, no se realiza ninguna evaluación y se utiliza directamente el componente especificado. Al especificar este atributo, todos los demás campos pasan a ser opcionales.

  • packageName: Indica el nombre del paquete del componente. Tipo: Serie.
  • className: Indica el nombre de la clase del componente. Tipo: Serie.

marcadores

Matriz de enteros

"flags": [2, 4, 8, 32]

Banderas adicionales que pueden modificar el comportamiento. Para consultar la lista de banderas, véase https://developer.android.com/reference/android/content/Intent.

extras

Matriz de objetos

"extras": [
 {
   "type": "string",
   "name": "com.mycompany.myapp.SOME_STRING_EXTRA",
    "value": "Some Value Here"
 },
 {
   "type": "integerArray",
   "name": "com.mycompany.myapp.SOME_INT_ARRAY_EXTRA",
   "value": [2, 3, 4]
 },
 {
   "type": "bundle",
   "name": "com.mycompany.myapp.SOME_BUNDLE_EXTRA",
   "value": [
     {
        "type": "string", 
        "name": "SomeBundleString", 
        "value": "Some Value Here"
     },
     {
        "type": "byteArray", 
        "name": "SomeBundleByteArray", 
        "value": [5, 6, 7]
     }
   ]
 }
]

Añade información adicional que se puede pasar en la intent. Para obtener más información sobre los campos adicionales, consulta «Campos adicionales ».

Campos adicionales
Nombre de campo Tipo Ejemplos Descripción

Tipo

Serie

"type": "string"
"type": "integerArray"
"type": "bundle"

Los tipos de información adicional son:

  • Tipos de base

    Se da soporte a los siguientes tipos de datos:

    • boolean: El valor de la información extra debe ser una cadena que sea verdadera o falsa.
    • char: El valor de la información extra debe ser una cadena con un solo carácter.
    • cadena: El valor de la información extra debe ser una cadena, y puede tener cualquier longitud.
    • byte: El valor de la información extra debe ser un entero entre -128 y 127.
    • integer: El valor de la información extra debe ser un entero comprendido entre -2147483648 y 2147483647.
    • short: El valor de la información extra debe ser un entero entre -32768 y 32767.
    • long: El valor de la información extra debe ser un número entero comprendido entre -9223372036854775808 y 9223372036854775807.
    • float: El valor de la información extra debe ser un número decimal.
    • double: El valor de la información extra debe ser un número decimal. Este tipo tiene mayor precisión que float.
  • Tipos de matrices

    Este tipo tiene las mismas definiciones que el tipo Base, pero se añaden con sintaxis de array entre corchetes. Los tipos admitidos son:

    • booleanArray
    • stringArray
    • charArray
    • byteArray
    • integerArray
    • shortArray
    • longArray
    • floatArray
    • doubleArray
  • ArrayList tipos

    Algunas aplicaciones también permiten recibir datos en ArrayList. Este tipo tiene las mismas definiciones y sintaxis que los tipos Array. Se admiten los siguientes tipos:

    • integerArrayList
    • stringArrayList
  • Tipo de paquete

    Para crear información adicional anidada, utilice el tipo de paquete. El valor debe ser un array de información extra.

    Por ejemplo:

    {
       "type": "bundle",
       "name": "com.mycompany.myapp.SOME_BUNDLE_EXTRA",
       "value": [
         {
            "type": "string", 
            "name": "SomeBundleString", 
            "value": "Some Value Here"
         },
         {
            "type": "byteArray", 
            "name": "SomeBundleByteArray", 
            "value": [5, 6, 7]
         }
       ]
     }

nombre

Serie

"name": "com.mycompany.myapp.SOME_STRING_EXTRA"
"name": "com.mycompany.myapp.SOME_INT_ARRAY_EXTRA"

El nombre de la información extra.

valor

Depende del tipo

"value": "Some Value Here"
"value": [5, 6, 7]
"value": 3.534
"value": null

El valor de la información adicional. Se pueden añadir valores en función del tipo.

Nota: En todos los casos, el valor puede especificarse como null. En este caso, se pasa un valor nulo a la aplicación de destino.
Ejemplo de definición de código JSON
{
  "action": "android.intent.action.VIEW",
  "data": "https://www.company.com#data",
  "packageName": "com.mycompany.myapp",
  "categories": [
    "android.intent.category.LAUNCHER",
    "android.intent.category.BROWSABLE"
  ],
  "type": "text/xml",
  "component": {
    "packageName": "com.mycompany.myapp",
    "className": "com.mycompany.myapp.ui.MyActivity"
  },
  "flags": [2, 4, 8, 32],
  "extras": [
    {
      "type": "string",
      "name": "com.mycompany.myapp.SOME_STRING_EXTRA",
      "value": "Some Value Here"
    },
    {
      "type": "integerArray",
      "name": "com.mycompany.myapp.SOME_INT_ARRAY_EXTRA",
      "value": [2, 3, 4]
    },
    {
      "type": "bundle",
      "name": "com.mycompany.myapp.SOME_BUNDLE_EXTRA",
      "value": [
        {
           "type": "string", 
           "name": "SomeBundleString", 
           "value": "Some Value Here"
        },
        {
           "type": "byteArray", 
           "name": "SomeBundleByteArray", 
           "value": [5, 6, 7]
        }
      ]
    }
  ]
}

Ejemplos para definir la intención personalizada de Android

La siguiente tabla proporciona ejemplos de valores de política que se pueden configurar para crear una intent personalizada de Android para varios escenarios comunes.

Para obtener más información sobre la configuración de las acciones de intención proporcionada por Google Android, consulte https://developer.android.com/reference/android/provider/Settings.

Escenario común Ubicación de elemento en el dispositivo Nombre de artículo Descripción del elemento Intención personalizada (JSON)

Abre la pantalla de ajustes de sonido del dispositivo. Para más información, véase Escenario común 1.

Valores

Ajustes de sonido

Haga clic aquí para ver los ajustes de sonido del dispositivo.

{
"action": "android.settings.SOUND_SETTINGS"
}

Abre cualquier pantalla de configuración del dispositivo. Por ejemplo, la pantalla Configuración de uso de datos.

Valores

Configuración del uso de datos

Haga clic aquí para ver los ajustes de uso de datos del dispositivo.

{
"action": "android.settings.DATA_USAGE_SETTINGS"
}

Abre una aplicación en el dispositivo. Por ejemplo, Google Chrome.

Abre la aplicación especificada en el nombre del paquete, igual que si pulsaras el icono de la aplicación en la pantalla de inicio del dispositivo.

Otros accesos directos

Abrir Google Chrome

Pulse aquí para abrir la aplicación Google Chrome.

{
  "action": "android.intent.action.MAIN",
  "packageName": "com.android.chrome",
  "categories": [
     "android.intent.category.LAUNCHER"
   ]
}

Ver un sitio web en la pantalla del dispositivo. Por ejemplo, Wikipedia.

Abre el navegador web para iniciar el URL especificado. La categoría se añade para garantizar que sólo se tengan en cuenta para la apertura los navegadores web.

Otros accesos directos

Abrir Wikipedia

Haga clic aquí para abrir el sitio web de Wikipedia en el navegador predeterminado.

{
  "action": "android.intent.action.VIEW",
  "data": "https://www.wikipedia.org",
  "categories": [
     "android.intent.category.BROWSABLE"
  ]
}

Ver un sitio web en la pantalla del dispositivo utilizando un navegador específico. Por ejemplo, consulte Google en Mozilla Firefox.

Abre Firefox para ver el URL especificado.

Otros accesos directos

Abrir el sitio web en Firefox

Haga clic aquí para abrir el sitio web especificado en el navegador Firefox.

{
  "action": "android.intent.action.VIEW",
  "data": "https://www.google.com",
  "packageName": "org.mozilla.firefox"
}

Marca un número en la pantalla del dispositivo. Por ejemplo, abre el marcador del terminal en la pantalla del dispositivo con el número 911 introducido y, a continuación, el usuario pulsa el botón Marcar.

Otros accesos directos

Contacto de emergencia

Haga clic aquí para llamar al número de Urgencias.

{
  "action": "android.intent.action.DIAL",
  "data": "tel:911"
}

Envíe un correo electrónico utilizando MaaS360 Mail. Por ejemplo, abre un compositor de MaaS360 Mail con el asunto y el cuerpo del correo ya completados.

Otros accesos directos

Redactar correo electrónico utilizando IBM MaaS360 Mail

Haga clic aquí para redactar el correo utilizando IBM MaaS360 Mail.

{
  "action": "android.intent.action.SENDTO",
  "packageName": "com.fiberlink.maas360.android.pim",
  "data": "mailto:abc@company.com",
  "extras": [
     {
        "type": "string",
        "name": "android.intent.extra.SUBJECT",
        "value": "Email Subject Goes Here"
     },
     {
        "type": "string",
        "name": "android.intent.extra.TEXT",
        "value": "Email Body Goes Here"
     }
  ]
}

Envía un correo electrónico con Gmail. Por ejemplo, abre un compositor de Gmail con el asunto y el cuerpo del correo ya completados.

Otros accesos directos

Redactar un correo con Gmail

Haz clic aquí para redactar un correo en la aplicación de Gmail.

{
  "action": "android.intent.action.SENDTO",
  "packageName": "com.google.android.gm",
  "data": "mailto:abc@company.com?subject=The%20subject%20of%20the%20mail&body=The%20body%20of%20the%20email"
}

Muestra la lista de contactos en la pantalla del dispositivo. Por ejemplo, mostrar la lista de contactos del dispositivo. Normalmente abre la aplicación Contactos del dispositivo.

Otros accesos directos

Abrir contactos

Haz clic aquí para abrir la aplicación Contactos.

{
  "action": "android.intent.action.VIEW",
  "data": "content://contacts/people/"
}
Escenario común 1:

Creación de intentos personalizados para los ajustes de sonido en el portal MaaS360

En el portal IBM MaaS360, configure los siguientes valores de política para abrir la pantalla Configuración de sonido en la pantalla del dispositivo.

Valor de política Valor Descripción
Añadir elemento de inicio personalizado
  • Ubicación del elemento en el dispositivo : Ajustes
  • Nombre del elemento : Ajustes de sonido
  • Descripción del artículo : Haga clic aquí para ver los ajustes de sonido del dispositivo
  • Propósito personalizado :
    {
    "action": "android.settings.SOUND_SETTINGS"
    }
Abre la pantalla de ajustes de sonido del dispositivo.

Abrir los ajustes de sonido en el dispositivo Android en modo quiosco

  1. Haz clic en el icono Ajustes del dispositivo Android.
  2. Haga clic en Configuración del dispositivo en la lista Menú.
    menu de ajustes en dispositivo android en modo kiosko

    Según el intento personalizado configurado, el elemento de inicio personalizado Ajustes de sonido se muestra en la sección Ajustes del dispositivo de la lista de menús.

    ajustes de sonido en dispositivo android en modo quiosco
  3. Haz clic en Ajustes de sonido.

    Se le redirigirá a la sección Ajustes de sonido del dispositivo Android.