Estoy probando la aplicacion en dispositivos con sdk >= 23 y tengo el siguiente codigo
B4X:
If p.SdkVersion >= 23 Then 'Si es android 6 o mayor hay que pedir permisos.
Dim rp As RuntimePermissions
ultimoPermiso = ""
rp.CheckAndRequest(rp.PERMISSION_READ_PHONE_STATE)
Do While ultimoPermiso.Length = 0
Sleep(0)
Loop
Log(ultimoPermiso & " = " & resultPermiso)
ultimoPermiso = ""
rp.CheckAndRequest(rp.PERMISSION_ACCESS_COARSE_LOCATION)
Do While ultimoPermiso.Length = 0
Sleep(0)
Loop
Log(ultimoPermiso & " = " & resultPermiso)
If rp.check(rp.PERMISSION_READ_PHONE_STATE) = False Or rp.Check(rp.PERMISSION_ACCESS_COARSE_LOCATION) = False Then
...........
End If
Sub Activity_PermissionResult (Permission As String, Result As Boolean)
ultimoPermiso = Permission
resultPermiso = Result
End Sub
Siempre me devuelve true. Como que tiene los permisos. Pero los permisos se los quito en ajustes, aplicaciones, etc... Entonces mi app da un error y se cierra.
He pensado que RuntimePermissions solo comprueba los permisos en el manifiesto y por ese motivo devuelve siempre true. ¿Puede ser esto?
Nota: A partir de Android 6.0 (nivel de API 23), los usuarios pueden revocar permisos desde cualquier app en cualquier momento, aunque la app esté orientada a un nivel de API inferior. Debes probar tu app para verificar que se comporte correctamente cuando no cuente con un permiso necesario, independientemente del nivel de API al que esté orientada tu app.
Si, hace lo mismo en debug, release y release ofuscated.
He probado el log en el Sub y sigue saliendo true.
Tambien e probado con dispositivo virtual y fisico.
Mañana seguire a ver que pasa.