Italian RuntimePermission

Fulvio75

Well-Known Member
Licensed User
Domanda su RuntimePermission:

Che differenza c'è tra mettere questo nel manifest:
AddPermission(android.permission.ACCESS_NETWORK_STATE)
AddPermission(android.permission.ACCESS_FINE_LOCATION)
AddPermission(android.permission.BLUETOOTH_ADVERTISE)
AddPermission(android.permission.BLUETOOTH_CONNECT)
AddPermission(android.permission.BLUETOOTH_SCAN)

e usare il RP as RuntimePermission per chiedere i permessi?

se lo metto solo nel manifest non funziona?
 

Fulvio75

Well-Known Member
Licensed User
No.

Metterli nel Manifest "dice" all'app che avrà bisogno del consenso dell'utente, usare RuntimePermission serve a chiederlo (e salvare la risposta).
quindi se li tolgo dal manifest e li chiedo è uguale?
funziona?
 

Sagenut

Expert
Licensed User
Longtime User
quindi se li tolgo dal manifest e li chiedo è uguale?
funziona?
No.
Nel manifest dichiari i permessi di cui avrai bisogno.
Con runtime permission poi li richiedi effettivamente all'utente.
 

Fulvio75

Well-Known Member
Licensed User
mi sono spiegato male...
quelli che metto nel manifest devono poi essere
No.
Nel manifest dichiari i permessi di cui avrai bisogno.
Con runtime permission poi li richiedi effettivamente all'utente.
Quindi servono tutti e due, devo metterli nel manifest e poi chiederli?
 

Fulvio75

Well-Known Member
Licensed User
Ok... in fase di compilazione mi dice che manca un permesso di utilizzo rete, quindi metto:

Manifest:
AddPermission(android.permission.ACCESS_NETWORK_STATE)

poi chiedo:

Functions.RP.CheckAndRequest("android.permission.ACCESS_NETWORK_STATE")
Wait For B4XPage_PermissionResult (Permission As String, ACCESS_NETWORK_STATE As Boolean)

If ACCESS_NETWORK_STATE = True Then

End If
 

Sagenut

Expert
Licensed User
Longtime User
Sì dovrebbe funzionare così
 

Fulvio75

Well-Known Member
Licensed User
Così?:

'***Nel manifest
' AddPermission(android.permission.WRITE_EXTERNAL_STORAGE)
' AddPermission(android.permission.READ_EXTERNAL_STORAGE)
' AddPermission(android.permission.ACCESS_NETWORK_STATE)
' AddPermission(android.permission.ACCESS_FINE_LOCATION)
' AddPermission(android.permission.BLUETOOTH_ADVERTISE)
' AddPermission(android.permission.BLUETOOTH_CONNECT)
' AddPermission(android.permission.BLUETOOTH_SCAN)

Functions.RP.CheckAndRequest(Functions.RP.PERMISSION_WRITE_EXTERNAL_STORAGE)
Wait For B4XPage_PermissionResult (Permission As String, WRITE_FILE As Boolean)

If WRITE_FILE = True Then

End If

Functions.RP.CheckAndRequest(Functions.RP.PERMISSION_READ_EXTERNAL_STORAGE)
Wait For B4XPage_PermissionResult (Permission As String, READ_FILE As Boolean)

If READ_FILE = True Then

End If

Functions.RP.CheckAndRequest("android.permission.ACCESS_NETWORK_STATE")
Wait For B4XPage_PermissionResult (Permission As String, ACCESS_NETWORK_STATE As Boolean)

If ACCESS_NETWORK_STATE = True Then

End If

Functions.RP.CheckAndRequest("android.permission.ACCESS_NETWORK_STATE")
Wait For B4XPage_PermissionResult (Permission As String, ACCESS_NETWORK_STATE As Boolean)

If ACCESS_NETWORK_STATE = True Then

End If

Functions.RP.CheckAndRequest(Functions.RP.PERMISSION_ACCESS_FINE_LOCATION)
Wait For B4XPage_PermissionResult (Permission As String, FINE_LOCATION As Boolean)

If FINE_LOCATION = True Then

End If

Functions.RP.CheckAndRequest("android.permission.BLUETOOTH_ADVERTISE")
Wait For B4XPage_PermissionResult (Permission As String, BLUETOOTH_ADVERTISE As Boolean)

If BLUETOOTH_ADVERTISE = True Then

End If

Functions.RP.CheckAndRequest("android.permission.BLUETOOTH_CONNECT")
Wait For B4XPage_PermissionResult (Permission As String, BLUETOOTH_CONNECT As Boolean)

If BLUETOOTH_CONNECT = True Then

End If

Functions.RP.CheckAndRequest("android.permission.BLUETOOTH_SCAN")
Wait For B4XPage_PermissionResult (Permission As String, BLUETOOTH_SCAN As Boolean)

If BLUETOOTH_SCAN = True Then

End If
 

Sagenut

Expert
Licensed User
Longtime User
Se cerchi puoi anche fare un ciclo per richiedere i permessi senza scrivere 6 volte o più lo stesso pezzo di codice.
 

Fulvio75

Well-Known Member
Licensed User
Questo negli eventi di MainPage non serve:

private Sub B4XPage_PermissionResult (Permission As String, Result As Boolean)

End Sub

non entra
 

LucaMs

Expert
Licensed User
Longtime User
(Quanto pubblichi codice sorgente, usa...
1707227674810.png

https://www.b4x.com/android/forum/threads/handle-multiple-permission-request.94611/post-598788
 

Fulvio75

Well-Known Member
Licensed User
Non entra perchè uso solo una dichiarazione di RP in un modulo e faccio riferimento sempre a quella.
Se per ogni pagina metto la dichiarazione RP funziona, quindi deduco che bisogna metterla per ogni pagina
 

Sagenut

Expert
Licensed User
Longtime User
Il permesso dovrebbe valere a livello di app/processo.
Una volta ottenuto credo che debba funzionare sempre.
 
Top