Skip to content

Most visited

Recently visited

navigation

Android 5.0 API

Nivel de API: 21

Android 5.0 (LOLLIPOP) ofrece nuevas funciones para los usuarios y desarrolladores de apps. En este documento se ofrece una introducción a las API nuevas más distinguidas.

Si publicaste una app, asegúrate de consultar los cambios de comportamiento en Android 5.0 que debes tener en cuenta en tu app. Estos cambios en el comportamiento pueden afectar tu app en dispositivos con Android 5.0, incluso si no usas nuevas API o tienes como objetivo una nueva funcionalidad.

Para ver en mayor profundidad las nuevas funciones de la plataforma, como alternativa consulta las Funciones destacadas de Android Lollipop.

Iniciar el desarrollo

A fin de comenzar a compilar apps para Android 5.0, primero debes obtener Android SDK. Luego, usa SDK Manager para descargar las imágenes de sistema y la plataforma de SDK de Android 5.0.

Actualización del nivel de tu API de destino

A fin de optimizar mejor tu app para dispositivos con Android 5.0, fija el atributo targetSdkVersion en "21", instala la app en una imagen de sistema de Android 5.0, pruébala y luego publica la app actualizada con este cambio.

Puedes usar las Android 5.0 API y al mismo tiempo mantener la compatibilidad con versiones anteriores agregando a tu código condiciones que comprueben el nivel de API del sistema antes de ejecutar las API no admitidas por el atributo minSdkVersion. Para obtener más información sobre cómo mantener la compatibilidad con versiones anteriores, consulta Compatibilidad con versiones de plataforma diferentes.

Para obtener más información sobre el funcionamiento de los niveles de API, consulta ¿Qué es un nivel de API?.

Importantes cambios en los comportamientos

Si publicaste anteriormente una app para Android, ten en cuenta que esta podría verse afectada por los cambios de Android 5.0.

Consulta la sección Cambios en Android 5.0 para obtener información detallada.

Interfaz de usuario

Compatibilidad con Material Design

En Android 5.0 se agrega compatibilidad para el nuevo estilo de material design de Android. Puedes crear apps con material design que sean visualmente dinámicas y tengan transiciones de elementos de IU que transmitan una sensación de naturalidad a los usuarios. Esta compatibilidad incluye lo siguiente:

Para obtener más información sobre cómo agregar funcionalidad de material design a tu app, consulta Material Design.

Documentos y actividades concurrentes en la pantalla de recientes

En versiones anteriores, en la pantalla de recientes solo podía mostrarse una tarea para cada app con la cual el usuario había tenido la última interacción. Ahora tu app puede abrir más tareas según sea necesario para actividades y documentos concurrentes adicionales. Esta función facilita la multitarea al permitir que los usuarios realicen rápidamente cambios entre actividades y documentos individuales de la pantalla de recientes, con una experiencia de cambio uniforme entre todas las apps. Algunos ejemplos de estas tareas concurrentes pueden incluir pestañas abiertas en una app de navegador web, documentos en una app de productividad, partidas concurrentes en un juego o conversaciones en una app de mensajería. Tu app puede administrar sus tareas a través de la clase ActivityManager.AppTask.

Para insertar una interrupción lógica, de modo que el sistema trate a tu actividad como una tarea nueva, usa FLAG_ACTIVITY_NEW_DOCUMENT al iniciar la actividad con startActivity(). También puedes obtener este comportamiento configurando el atributo documentLaunchMode del elemento <activity> en "intoExisting" o "always" en tu manifiesto.

Para evitar la saturación de la pantalla de recientes, puedes establecer la cantidad máxima de tareas de tu app que pueden aparecer en esta pantalla. Para hacerlo, establece el atributo android:maxRecents de <application>. La cantidad máxima actual que se puede especificar es de 50 tareas por usuario (25 para dispositivos con poca memoria RAM).

Mediante configuración, se puede determinar que las tareas persistan en la pantalla de recientes tras los reinicios. Para controlar el comportamiento de persistencia, usa el atributo android:persistableMode. También puedes cambiar las propiedades visuales de una actividad en la pantalla de recientes, tales como el color, la etiqueta y el ícono de la actividad, llamando al método setTaskDescription().

Actualizaciones de WebView

En Android 5.0 se actualiza la implementación de WebView a Chromium M37, que supone mejoras de seguridad y estabilidad, y también la corrección de errores. Se actualizó la string user-agent predeterminada para un componente WebView que se ejecute en Android 5.0, a fin de incorporar 37.0.0.0 como número de versión.

Esta versión presenta la clase PermissionRequest, que permite a tu app otorgar el permiso WebView para acceder a los recursos protegidos, como la cámara y el micrófono, a través de API web como getUserMedia(). Tu app debe tener los permisos correspondientes de Android para estos recursos a fin de otorgar los permisos a WebView.

Con el nuevo método onShowFileChooser(), ahora puedes usar un campo de entrada de formulario en WebView e iniciar un selector de archivos para seleccionar imágenes y archivos del dispositivo Android.

Además, esta versión es compatible con los estándares abiertos WebAudio, WebGL y WebRTC. Para obtener más información sobre las nuevas funciones incluidas en esta versión, consulta WebView para Android.

Captura y uso compartido de pantalla

Android 5.0 te permite agregar capacidades de captura y uso compartido de pantalla a tu app con las nuevas android.media.projection API. Esta funcionalidad es útil, por ejemplo, si deseas habilitar el uso compartido de pantalla en una app de videoconferencia.

El nuevo método createVirtualDisplay() permite a tu app capturar el contenido de la pantalla principal (la vista predeterminada) en un objeto Surface que luego tu app puede enviar a través de la red. La API solo permite capturar contenido de pantalla no seguro, y no audio del sistema. Para iniciar la captura de pantalla, tu app primero debe solicitar el permiso del usuario abriendo un cuadro de diálogo de captura de pantalla con un Intent obtenido a través del método createScreenCaptureIntent().

Para ver un ejemplo de uso de las nuevas API, consulta la clase MediaProjectionDemo en el ejemplo de proyecto.

Notificaciones

Notificaciones en la pantalla bloqueada

En las pantallas bloqueadas de Android 5.0 se pueden presentar notificaciones. Los usuarios pueden elegir a través de Settings si desean permitir que el contenido de notificación confidencial se muestre en una pantalla bloqueada segura.

Tu app puede controlar el nivel de detalle visible cuando sus notificaciones se muestran en una pantalla bloqueada segura. Para controlar el nivel de visibilidad, llama a setVisibility() y especifica uno de los siguientes valores:

Cuando el nivel de visibilidad es VISIBILITY_PRIVATE, también puedes proporcionar una versión redactada del contenido de la notificación que oculta datos personales. Por ejemplo, una app de SMS podría mostrar una notificación con el texto “Tienes 3 mensajes de texto nuevos” y ocultar el contenido del mensaje y los remitentes. Para proporcionar esta notificación alternativa, primero crea la notificación de reemplazo con Notification.Builder. Cuando crees el objeto de notificación privada, adjunta la notificación de reemplazo a este objeto mediante el método setPublicVersion().

Metadatos de notificaciones

En Android 5.0 se usan metadatos asociados con notificaciones de tu app para ordenar las notificaciones de manera más inteligente. Para definir los metadatos, llama a los siguientes métodos en Notification.Builder cuando crees la notificación:

Gráficos

Compatibilidad con OpenGL ES 3.1

En Android 5.0 se agregan interfaces Java y compatibilidad nativa con OpenGL ES 3.1. La nueva funcionalidad clave proporcionada en OpenGL ES 3.1 incluye lo siguiente:

La interfaz Java para OpenGL ES 3.1 en Android se proporciona con GLES31. Al usar OpenGL ES 3.1, asegúrate de declarar esto en tu archivo de manifiesto con la etiqueta <uses-feature> y el atributo android:glEsVersion. Por ejemplo:

<manifest>
    <uses-feature android:glEsVersion="0x00030001" />
    ...
</manifest>

Para obtener más información sobre el uso de OpenGL ES, incluida la manera de comprobar la versión de OpenGL ES que admite el dispositivo durante el tiempo de ejecución, consulta la guía de la OpenGL ES API.

Paquete de extensiones de Android

Además de OpenGL ES 3.1, esta versión ofrece un paquete de extensiones con interfaces Java y compatibilidad nativa con la funcionalidad de gráficos avanzados. En Android, estas extensiones se tratan como un único paquete. (Si la extensión ANDROID_extension_pack_es31a está presente, tu app puede suponer que están presentes todas las extensiones del paquete y habilitar las funciones del lenguaje de sombreado con una sola instrucción #extension).

El paquete de extensiones admite lo siguiente:

La interfaz Java para el paquete de extensiones se proporciona con GLES31Ext. En el manifiesto de tu app, puedes declarar que tu app debe instalarse únicamente en dispositivos compatibles con el paquete de extensiones. Por ejemplo:

<manifest>
    <uses-feature android:name=“android.hardware.opengles.aep”
        android:required="true" />
    ...
</manifest>

Medios

Camera API para capacidades avanzadas de cámara

Android 5.0 incorpora la nueva android.hardware.camera2 API para proporcionar una captura de fotos y un procesamiento de imágenes refinados. Ahora puedes acceder mediante programación a los dispositivos de cámara disponibles para el sistema con getCameraIdList() y conectarte a un dispositivo específico con openCamera(). Para comenzar a capturar imágenes, crea un elemento CameraCaptureSession y especifica los objetos Surface para enviar las imágenes capturadas. El elemento CameraCaptureSession puede configurarse para tomar fotos individuales o múltiples en ráfaga.

Para recibir notificaciones cuando se capturen imágenes nuevas, implementa el receptor CameraCaptureSession.CaptureCallback y configúralo en tu solicitud de captura. Cuando el sistema completa la solicitud de captura de imágenes, tu receptor CameraCaptureSession.CaptureCallback recibe una llamada para onCaptureCompleted() y proporciona los metadatos de captura de imágenes en un elemento CaptureResult.

La clase CameraCharacteristics permite a tu app detectar las funciones de cámara disponibles en un dispositivo. La propiedad INFO_SUPPORTED_HARDWARE_LEVEL del objeto representa el nivel de funcionalidad de la cámara.

Para ver la manera de usar la Camera API actualizada, consulta los ejemplos de implementación Camera2Basic y Camera2Video en esta versión.

Reproducción de audio

En esta versión se incluyen los siguientes cambios en AudioTrack:

Control de reproducción de medios

Usa las nuevas API de notificación y medios para asegurarte de que la IU del sistema esté al tanto de tu reproducción de medios, y de que pueda extraer y mostrar la carátula del álbum. El control de la reproducción de medios a través de una IU y un servicio es ahora más fácil con las nuevas clases MediaSession y MediaController.

La nueva clase MediaSession reemplaza la clase obsoleta RemoteControlClient y proporciona un único conjunto de métodos callback para manejar los controles de transporte y los botones de medios. Si tu app ofrece reproducción de medios y se ejecuta en las plataformas Android TV o Wear, usa la clase MediaSession para manejar los controles de transporte con los mismos métodos callback.

Ahora puedes compilar tu propia app de controlador de medios con la nueva clase MediaController. Esta clase ofrece una manera de supervisar y controlar, con seguridad para los subprocesos, la reproducción de medios desde el proceso de la IU de la app. Al crear un controlador, especifica un objeto MediaSession.Token para que tu app pueda interactuar con la clase MediaSession dada. Usando los métodos MediaController.TransportControls, puedes enviar comandos como play(), stop(), skipToNext() y setRating() para controlar la reproducción de medios en esa sesión. Con el controlador, también puedes registrar un objeto MediaController.Callback para escuchar metadatos y cambios de estado en la sesión.

Además, puedes crear notificaciones enriquecidas que permitan el control de la reproducción vinculado a una sesión multimedia con la nueva clase Notification.MediaStyle.

Navegación de medios

Android 5.0 incorpora la capacidad de que las apps exploren la biblioteca de contenidos de medios de otra app a través de la nueva android.media.browse API. Para exponer el contenido de multimedia en la app, extiende la clase MediaBrowserService. Tu implementación de MediaBrowserService debe brindar acceso a un elemento MediaSession.Token para que las apps puedan reproducir contenido de medios proporcionado a través de tu servicio.

Para interactuar con un servicio de navegador de medios, usa la clase MediaBrowser. Especifica el nombre del componente para un elemento MediaSession cuando crees una instancia de MediaBrowser. Al usar esa instancia de navegador, tu app podrá conectarse al servicio asociado y obtener un objeto MediaSession.Token para reproducir el contenido expuesto a través de ese servicio.

Almacenamiento

Selección de directorio

Android 5.0 amplía el framework de acceso a almacenamiento para permitir que los usuarios seleccionen un subárbol de directorio entero y proporcionar a las apps acceso de lectura y escritura a todos los documentos contenidos sin requerir la confirmación del usuario para cada uno de ellos.

Para seleccionar un subárbol de directorio, crea y envía una intent OPEN_DOCUMENT_TREE. El sistema muestra todas las instancias de DocumentsProvider que admiten la selección de subárboles. Esto permite que el usuario explore y seleccione un directorio. El URI mostrado representa el acceso al subárbol seleccionado. Luego puedes usar buildChildDocumentsUriUsingTree() y buildDocumentUriUsingTree() junto con query() para explorar el subárbol.

El nuevo método createDocument() te permite crear nuevos documentos o directorios en cualquier lugar del subárbol. Para administrar los documentos existentes, usa renameDocument() y deleteDocument(). Comprueba COLUMN_FLAGS para verificar si el proveedor admite estas llamadas antes de emitirlas.

Si implementas DocumentsProvider y deseas admitir la selección de un subárbol, implementa isChildDocument() e incluye FLAG_SUPPORTS_IS_CHILD en tu COLUMN_FLAGS.

En Android 5.0 también se incorporan nuevos directorios de paquetes específicos en el almacenamiento compartido, donde tu app puede disponer archivos multimedia para que se incluyan en MediaStore. El nuevo getExternalMediaDirs() muestra rutas de acceso a estos directorios en todos los dispositivos de almacenamiento compartido. Casi como en el caso de getExternalFilesDir(), la app no necesita permisos adicionales para acceder a las rutas de acceso mostradas. La plataforma busca periódicamente nuevos medios en estos directorios, pero también puedes usar MediaScannerConnection para buscar contenido nuevo de forma explícita.

Redes inalámbricas y conectividad

Conexiones de red múltiples

Android 5.0 ofrece nuevas API de redes múltiples que permiten que tu app busque dinámicamente las redes disponibles con capacidades específicas y establezca una conexión con ellas. Esta funcionalidad es útil cuando tu app requiere una red especializada, como una SUPL, MMS o red de facturación del proveedor, o si deseas enviar datos con un determinado tipo de protocolo de transporte.

Para seleccionar una red y conectarte a ella de forma dinámica desde la app, sigue estos pasos:

  1. Crea ConnectivityManager.
  2. Usa la clase NetworkRequest.Builder para crear un objeto NetworkRequest y especifica las características de la red y el tipo de transporte que para tu app.
  3. Para buscar redes adecuadas, llama a requestNetwork() o a registerNetworkCallback(), y envía el objeto NetworkRequest y una implementación de ConnectivityManager.NetworkCallback. Usa el método requestNetwork() si deseas cambiar de forma activa a una red adecuada una vez que se haya detectado; para recibir solo notificaciones de redes analizadas sin realizar cambios de forma activa, usa el método registerNetworkCallback() en su lugar.

Cuando el sistema detecta una red adecuada, se conecta a la red e invoca el callback onAvailable(). Puedes usar el objeto Network desde el callback para obtener información adicional sobre la red o indicar al tráfico que use la red seleccionada.

Bluetooth de bajo consumo

Android 4.3 sumó compatibilidad de plataforma para Bluetooth de bajo consumo (Bluetooth LE) en el rol central. En Android 5.0, un dispositivo Android ahora puede funcionar como un dispositivo periférico Bluetooth LE. Las apps pueden usar esta capacidad para que otros dispositivos cercanos detecten su presencia. Por ejemplo, puedes crear apps que permitan que un dispositivo funcione como un podómetro o un monitor de salud, y comunique sus datos con otro dispositivo Bluetooth LE.

Las nuevas android.bluetooth.le API permiten que tus apps transmitan anuncios, busquen respuestas y establezcan conexiones con dispositivos Bluetooth LE cercanos. Para usar las nuevas funciones de publicidad y búsqueda, agrega el permiso BLUETOOTH_ADMIN a tu manifiesto. Cuando los usuarios actualizan o descargan tu app desde Play Store, se les pide que concedan el siguiente permiso a tu app: “Información de conexión Bluetooth: Permite que la app controle el sistema Bluetooth, incluida la transmisión de información a dispositivos Bluetooth cercanos o la obtención de información sobre ellos”.

Para iniciar la publicidad a través de Bluetooth LE para que otros dispositivos puedan descubrir tu app, llama a startAdvertising() y envía una implementación de la clase AdvertiseCallback. El objeto de callback recibe un informe del éxito o fracaso de la operación de publicidad.

En Android 5.0 se incorpora la clase ScanFilter para que tu app pueda buscar solo los tipos específicos de dispositivos que busca. Para empezar a buscar dispositivos Bluetooth LE, llama a startScan() y envía una lista de filtros. En la llamada al método, también debes brindar una implementación de ScanCallback para informar cuando se encuentra un anuncio de Bluetooth LE.

Mejoras de NFC

Android 5.0 agrega estas mejoras para permitir un uso más amplio y más flexible de la NFC:

Proyecto Volta

Además de las nuevas funciones, en Android 5.0 se enfatizan las mejoras en términos de duración de la batería. Usa las nuevas API y la herramienta para entender y optimizar el consumo de energía de tu app.

Programación de trabajos

Android 5.0 proporciona una nueva JobScheduler API que te permite optimizar la duración de la batería definiendo los trabajos que el sistema ejecutará de forma asincrónica en otro momento o en condiciones específicas (por ejemplo, cuando la carga del dispositivo esté en curso). La programación de trabajos es útil en situaciones como las siguientes:

Una unidad de trabajo está encapsulada por un objeto JobInfo. Este objeto especifica los criterios de programación.

Usa la clase JobInfo.Builder para configurar la manera en que debe ejecutarse la tarea programada. Puedes programar la tarea para que se ejecute en condiciones específicas, tales como estas:

Por ejemplo, puedes agregar un código como este para ejecutar tu tarea en una red no medida:

JobInfo uploadTask = new JobInfo.Builder(mJobId,
                                         mServiceComponent /* JobService component */)
        .setRequiredNetworkCapabilities(JobInfo.NetworkType.UNMETERED)
        .build();
JobScheduler jobScheduler =
        (JobScheduler) context.getSystemService(Context.JOB_SCHEDULER_SERVICE);
jobScheduler.schedule(uploadTask);

Si el dispositivo tiene energía estable (es decir, estuvo enchufado durante más de 2 minutos y la batería está en un nivel aceptable), el sistema ejecutará cualquier trabajo programado que esté listo, incluso si el plazo del trabajo no ha caducado.

Para ver un ejemplo de cómo usar la JobScheduler API, consulta el caso de implementación de JobSchedulerSample en esta versión.

Herramientas de desarrolladores para el uso de batería

El nuevo comando dumpsys batterystats genera información estadística interesante sobre el uso de la batería en un dispositivo, organizada por ID de usuario único (UID). Las estadísticas incluyen lo siguiente:

Usa la opción --help para obtener información acerca de las distintas opciones para adaptar la salida. Por ejemplo, para imprimir las estadísticas de uso de batería de un paquete de apps dado desde la última carga del dispositivo, ejecuta el siguiente comando:

$ adb shell dumpsys batterystats --charged <package-name>

Puedes usar la herramienta Battery Historian en la salida del comando dumpsys para generar una visualización HTML de eventos relacionados con la energía a partir de los registros. Esta información te permite comprender y diagnosticar cualquier problema relacionado con la batería.

Android en el entorno de trabajo y educativo

Aprovisionamiento administrado

Android 5.0 ofrece nuevas funcionalidades para ejecutar apps en un entorno empresarial. Un administrador de dispositivos puede iniciar un proceso de aprovisionamiento administrado para agregar un perfil administrado de presencia conjunta, aunque separado, a un dispositivo si el usuario tiene una cuenta personal existente. Las apps que se asocian con perfiles administrados aparecen junto a las apps no administradas en el Launcher del usuario, la pantalla de recientes y las notificaciones.

Para iniciar el proceso de aprovisionamiento administrado, envía ACTION_PROVISION_MANAGED_PROFILE en un elemento Intent. Si la llamada se realiza correctamente, el sistema activa el callback onProfileProvisioningComplete(). Luego, puedes llamar a setProfileEnabled() para habilitar este perfil administrado.

De manera predeterminada, solo un pequeño subconjunto de apps se habilitan en el perfil administrado. Puedes instalar apps adicionales en el perfil administrado llamando a enableSystemApp().

Si programas una app Launcher, puedes usar la nueva clase LauncherApps para obtener una lista de las actividades que se pueden iniciar para el usuario actual y cualquier perfil administrado asociado. Tu Launcher puede hacer que las apps administradas se destaquen visualmente agregando una insignia de trabajo al ícono del elemento de diseño. Para recuperar el ícono con insignia, llama a getUserBadgedIcon().

Para ver la manera de usar la nueva funcionalidad, consulta la muestra de implementación de BasicManagedProfile en esta versión.

Propietario del dispositivo

En Android 5.0 se introduce la capacidad de implementar una app de propietario de dispositivo. Un propietario de dispositivo es un tipo especializado de administrador de dispositivos que tiene la capacidad adicional de crear y quitar usuarios secundarios, y de configurar opciones globales en el dispositivo. Tu app de propietario de dispositivo puede usar los métodos de la clase DevicePolicyManager para tomar un control refinado de la configuración, la seguridad y las apps en los dispositivos administrados. Un dispositivo puede tener solamente un propietario de dispositivo activo a la vez.

Para implementar y activar un propietario de dispositivo, debes realizar una transferencia de datos NFC de una app de programación al dispositivo mientras este se encuentre en estado no aprovisionado. Esta transferencia de datos envía la misma información que la que se envía en la intent de aprovisionamiento descrita en Aprovisionamiento administrado.

Fijación de pantalla

En Android 5.0 se introduce una nueva API de fijación de pantalla que te permite impedir temporalmente que los usuarios abandonen tu tarea o sean interrumpidos por notificaciones. Podría usarse, por ejemplo, si programas una app de educación para cumplir con requisitos de evaluación de gran importancia en Android, o una aplicación de propósito único o de kiosco. Cuando tu app active la fijación de pantalla, los usuarios no podrán ver las notificaciones, acceder a otras apps ni volver a la pantalla de inicio hasta que tu app salga del modo.

Existen dos maneras de activar la fijación de pantalla:

Cuando el bloqueo de tareas está activo, ocurre lo siguiente:

Framework de impresión

Representación de PDF como mapa de bits

Ahora puedes representar páginas de documentos PDF en imágenes de mapa de bits para imprimir usando la nueva clase PdfRenderer. Debes especificar un ParcelFileDescriptor que admita búsquedas (es decir, que se pueda acceder al contenido de forma aleatoria) en el cual el sistema escriba el contenido imprimible. Tu app puede obtener una página para representaciones con openPage() y luego llamar a render() para convertir el elemento PdfRenderer.Page abierto en un mapa de bits. También puedes configurar parámetros adicionales si solo deseas convertir una parte del documento en una imagen de mapa de bits (por ejemplo, para implementar la representación de mosaicos con el propósito de acercar el documento).

Para ver un ejemplo de uso de las nuevas API, consulta el ejemplo PdfRendererBasic en el ejemplo de proyecto.

Sistema

Estadísticas de uso de apps

Ahora puedes acceder al historial de uso de las apps desde un dispositivo Android con la nueva android.app.usage API. Esta API proporciona información de uso más detallada que el método obsoleto getRecentTasks(). Para usar esta API, primero debes declarar el permiso "android.permission.PACKAGE_USAGE_STATS" en tu manifiesto. El usuario también debe permitir el acceso para esta app a través de Settings > Security > Apps con acceso de uso.

El sistema recopila los datos de uso por cada app y agrega los datos en intervalos diarios, semanales, mensuales y anuales. El plazo máximo durante el cual el sistema conserva estos datos es el siguiente:

Para cada app, el sistema registra los siguientes datos:

Pruebas y accesibilidad

Mejoras de pruebas y accesibilidad

En Android 5.0 se incorpora la siguiente compatibilidad para pruebas y accesibilidad:

IME

Simplificación del cambio de idiomas de escritura

A partir de Android 5.0, los usuarios podrán realizar cambios más fácilmente entre todos los editores de métodos de entrada (IME) admitidos por la plataforma. La ejecución de la acción de cambio designada (normalmente tocando un ícono del mundo en el teclado en pantalla) permite recorrer todos estos IME. Este cambio de comportamiento se implementa a través del método shouldOfferSwitchingToNextInputMethod().

Además, el framework ahora comprueba si en el IME siguiente se incluye un mecanismo de cambio (y, por lo tanto, si ese IME admite el cambio al IME que le sigue). Un IME con un mecanismo de cambio no pasará a un IME que no lo tenga. Este cambio de comportamiento se implementa a través del método switchToNextInputMethod().

Para ver un ejemplo de cómo usar las API de cambio de IME actualizadas, consulta el caso de implementación de teclado en pantalla actualizado en esta versión. Para obtener más información sobre cómo implementar cambios entre IME, consulta Creación de un método de entrada.

Declaraciones de manifiesto

Funciones requeridas declarables

Los siguientes valores ahora son compatibles con el elemento <uses-feature>; por lo tanto, podrás asegurarte de que tu app solo se instale en dispositivos que proporcionen las funciones que necesite.

Permisos de usuario

El siguiente permiso ahora es compatible con el elemento <uses-permission> para declarar los permisos que tu app requiere a fin de acceder a determinadas API.

This site uses cookies to store your preferences for site-specific language and display options.

Get the latest Android developer news and tips that will help you find success on Google Play.

* Required Fields

Hooray!

Browse this site in ?

You requested a page in , but your language preference for this site is .

Would you like to change your language preference and browse this site in ? If you want to change your language preference later, use the language menu at the bottom of each page.

This class requires API level or higher

This doc is hidden because your selected API level for the documentation is . You can change the documentation API level with the selector above the left navigation.

For more information about specifying the API level your app requires, read Supporting Different Platform Versions.

Take a short survey?
Help us improve the Android developer experience.
(Sep 2017 survey)