Adaptación a Android11

Si necesita adaptarse a Android 11, se recomienda descargar Studio 4.2 (versión canaria). La diferencia es que el antiguo SDK no es compatible. El SDK que se muestra en 4.1 es Android 10.0+, y el SDK que se muestra en 4.2 es Androide 11.

Configure Studio, abra el archivo de nivel de módulo build.gradle y actualice compileSdkVersion y targetSdkVersion:

Android { compileSdkVersion 30

defaultConfig {
    targetSdkVersion 30
}
...

}

2. Actualización de privacidad

El siguiente es un resumen de los cambios relacionados con los permisos de privacidad en Android 11. Los principales cambios relacionados con los permisos de privacidad en Android 11 se almacenan en particiones. Las operaciones bajo los archivos de caché específicos de la aplicación actual no requieren permisos y se pueden accede directamente.

1. Cumplimiento del almacenamiento de partición:

Las aplicaciones destinadas a Android 11 y las aplicaciones destinadas a Android 10 sin requestLegacyExternalStorage establecida en verdadero para deshabilitar el almacenamiento particionado, la configuración de compatibilidad de almacenamiento particionado de Android 11 no tendrá efecto.

Android utiliza un sistema de archivos similar a los sistemas de archivos basados ​​en disco que se encuentran en otras plataformas. El sistema proporciona las siguientes formas de guardar los datos de la aplicación:

Espacio de almacenamiento específico de la aplicación: almacene archivos utilizados solo por la aplicación, que se pueden almacenar en un directorio dedicado en el volumen de almacenamiento interno o en otros directorios dedicados en el espacio de almacenamiento externo. Use un directorio en el almacenamiento interno para almacenar información confidencial a la que otras aplicaciones no deberían tener acceso.

Almacenamiento compartido: almacena archivos que su aplicación intenta compartir con otras aplicaciones, incluidos medios, documentos y otros archivos.

Preferencias: almacene datos sin procesar privados como pares clave-valor.

Base de datos: use la biblioteca de persistencia de Room para almacenar datos estructurados en una base de datos dedicada.

Si el usuario es una aplicación de Android 11 actualizada, establezca el atributo preserveLegacyExternalStorage en verdadero, y el usuario aún puede usar la versión anterior del modelo de almacenamiento. Si la aplicación se desinstala y vuelve a instalar, este atributo no es válido

Android R estipula que la aplicación tiene dos modos de visualización del espacio de almacenamiento externo: vista heredada (modo de partición) y vista filtrada (modo de compatibilidad). Puede
usar la API environment.isExternalStorageLegacy() para comprobar el modo de ejecución de la aplicación.

Cambio de ruta de archivo en modo de partición: Environment.getExternalStorageState() cambiado a: context.getExternalFilesDir()

android:installLocation="preferExternal" especifica una preferencia en el archivo de manifiesto de la aplicación para instalar la aplicación en un almacenamiento externo

2. Permiso único

La solicitud de información de ubicación, los permisos de micrófono y cámara deben volver a adquirirse cada vez, la modificación del permiso del número de teléfono: se debe solicitar el permiso READ_PHONE_NUMBERS o

El desarrollador puede solicitar al usuario que deshabilite la función de reinicio automático. Después de la desactivación, los permisos solicitados actualmente se mantendrán y no se volverán a solicitar la próxima vez que ingrese a la aplicación, isAutoRevokeWhitelisted(). Si este método devuelve verdadero, el sistema no restablecerá automáticamente los permisos de la aplicación.

Android 11 cambia los permisos relacionados con la telefonía que usa su aplicación para leer números de teléfono.

(1) Si su aplicación tiene como objetivo Android 11 y necesita acceder a la API del número de teléfono que se muestra en la siguiente lista, debe solicitar el permiso READ_PHONE_NUMBERS en lugar del permiso READ_PHONE_STATE.

1. El método getLine1Number() en la clase TelephonyManager y la clase TelecomManager.

2. Método getMsisdn() no admitido en la clase TelephonyManager.

(2) Si su aplicación declara READ_PHONE_STATE para llamar a métodos distintos a los de la lista anterior, puede continuar solicitando READ_PHONE_STATE en todas las versiones de Android. Sin embargo, si solo usa el permiso READ_PHONE_STATE para los métodos de la lista anterior, actualice su archivo de manifiesto de la siguiente manera:

1. Cambie la declaración de READ_PHONE_STATE para que su aplicación solo use ese permiso en Android 10 (API nivel 29) y versiones anteriores.

2. Agregue el permiso READ_PHONE_NUMBERS. El siguiente fragmento de declaración de manifiesto demuestra este proceso:

Supongo que te gusta

Origin blog.csdn.net/hongranzuoxiang/article/details/109842183
Recomendado
Clasificación