studio requestpermissions permission permisos onrequestpermissionsresult multiple example checkselfpermission android permissions android-6.0-marshmallow

requestpermissions - request permission android studio



Permiso de Android 6.0.GET_ACCOUNTS (5)

Estoy usando esto para obtener permiso:

if (ContextCompat.checkSelfPermission(context, Manifest.permission.GET_ACCOUNTS) != PackageManager.PERMISSION_GRANTED) { // Should we show an explanation? if (ActivityCompat.shouldShowRequestPermissionRationale(context, Manifest.permission.GET_ACCOUNTS)) { } else { // No explanation needed, we can request the permission. ActivityCompat.requestPermissions(context, new String[]{Manifest.permission.GET_ACCOUNTS}, PERMISSIONS_REQUEST_GET_ACCOUNTS); // MY_PERMISSIONS_REQUEST_READ_CONTACTS is an // app-defined int constant. The callback method gets the // result of the request. } }

Pero el cuadro de diálogo emergente para solicitar permiso al usuario para acceder a Contactos!?!?

En pre 6.0 en Play Store con

<uses-permission android:name="android.permission.GET_ACCOUNTS"/>

La solicitud se llama Identidad y explica que la necesito para obtener la cuenta del dispositivo.




Eso es debido a los grupos de permisos. Básicamente, los permisos se colocan en diferentes grupos y todos los permisos de ese grupo se concederían si se otorga uno de ellos.

P.ej. Debajo de "Contactos", hay contactos de escritura / lectura y de obtención de cuentas, de modo que cuando solicite alguno de ellos, la ventana emergente le solicitará los permisos de Contactos.

Leer: Todo lo que todo desarrollador de Android debe saber sobre el nuevo Permiso de tiempo de ejecución de Android

EDITAR 1

Solo pensé que agregaría la información de actualización de Oreo relacionada (no para obtener cuentas, sino permisos y grupos):
fuente: https://developer.android.com/about/versions/oreo/android-8.0-changes.html#rmp

Antes de Android 8.0 (nivel de API 26), si una aplicación solicitaba un permiso en tiempo de ejecución y el permiso se otorgaba, el sistema también otorgaba incorrectamente a la aplicación el resto de los permisos que pertenecían al mismo grupo de permisos y que estaban registrados en el manifiesto.

Para aplicaciones dirigidas a Android 8.0, este comportamiento ha sido corregido. La aplicación solo tiene los permisos que ha solicitado explícitamente. Sin embargo, una vez que el usuario otorga un permiso a la aplicación, todas las solicitudes posteriores de permisos en ese grupo de permisos se otorgan automáticamente.