Ciao a tutti!
Ho un problema nella richiesta dei permessi, cosa che faccio nell'Activity_Create richiamando la funzione Check_Permissions come segue:
Ma alla prima richiesta di permesso all'utente, compare la richesta sul display ma il codice va avanti, credo di aver impostato correttamente le Wait For. Dove sbaglio? Grazie mille
Ho un problema nella richiesta dei permessi, cosa che faccio nell'Activity_Create richiamando la funzione Check_Permissions come segue:
B4X:
Sub Check_Permissions
hasPermissions = False 'assumo che non sia stato dato nessun permesso
Dim requestedPermissions As List
requestedPermissions.Initialize
requestedPermissions.Clear
'controllo i permessi uno per uno, e se non dati, li aggiungo ad una lista
Dim permissionResult As Boolean
permissionResult = RuntimePermissions.Check("android.permission.WRITE_EXTERNAL_STORAGE")
If (permissionResult = False) Then
requestedPermissions.Add("android.permission.WRITE_EXTERNAL_STORAGE")
End If
permissionResult = RuntimePermissions.Check("android.permission.READ_PHONE_STATE")
If (permissionResult = False) Then
requestedPermissions.Add("android.permission.READ_PHONE_STATE")
End If
permissionResult = RuntimePermissions.Check("android.permission.CAMERA")
If (permissionResult = False) Then
requestedPermissions.Add("android.permission.CAMERA")
End If
permissionResult = RuntimePermissions.Check("android.permission.ACCESS_COARSE_LOCATION")
If (permissionResult = False) Then
requestedPermissions.Add("android.permission.ACCESS_COARSE_LOCATION")
End If
permissionResult = RuntimePermissions.Check("android.permission.ACCESS_FINE_LOCATION")
If (permissionResult = False) Then
requestedPermissions.Add("android.permission.ACCESS_FINE_LOCATION")
End If
If (requestedPermissions.Size > 0) Then 'ci sono permessi da richiedere, quindi hasPermissions rimane False
Wait For (Request_Permissions(requestedPermissions)) Complete (Result As Object)
Else
hasPermissions = True 'permessi già dati in precedenza
End If
End Sub
Sub Request_Permissions (requestedPermissions As List) As ResumableSub
hasPermissions = True 'risetto il default, perchè mi serve che se anche solo un permesso non viene dato, devo fermare l'esecuzione dell'app
Dim cPermission As String
For p=0 To (requestedPermissions.Size-1)
cPermission = requestedPermissions.Get(p)
RuntimePermissions.CheckAndRequest(cPermission)
Wait For Activity_PermissionResult (Permission As String, Result As Boolean) 'attendo il risultato
If (Result = False) Then 'else se concesso, hasPermissions è già True di default
hasPermissions = False
End If
Next
Return Null
End Sub
Sub Activity_Create
Check_Permissions
If (hasPermissions = False) Then
'Blocco
End If