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.
Afortunadamente esto cambiará en Android N
http://developer.android.com/preview/behavior-changes.html#perm
El permiso GET_ACCOUNTS ahora está en desuso. El sistema ignora este permiso para aplicaciones dirigidas a Android N.
En Marshmallow todos los permisos peligrosos pertenecen a grupos de permisos.
El permiso android.permission.GET_ACCOUNTS
pertenece al grupo CONTACTS
Puede encontrar más información sobre permisos peligrosos y sus grupos aquí:
https://developer.android.com/guide/topics/security/permissions.html#normal-dangerous
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.
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.
Tengo tu pregunta equivocada primero En esta página http://developer.android.com/guide/topics/security/permissions.html#perm-groups , puede ver que GET_ACCOUNTS se refiere a los contactos del grupo de permisos. Debido a eso, se le solicita permiso de contacto.
GET_ACCOUNTS
se trasladó al grupo de permisos CONTACTS
en Android 6.0 . Mientras que la API nos proporciona permisos, al usuario (al menos para Android 6.0) se le solicitan los grupos de permisos. Por lo tanto, al usuario se le dará la misma solicitud para GET_ACCOUNTS
que el usuario obtendría para READ_CONTACTS
o WRITE_CONTACTS
.