Questa è una sub da lanciare all'avvio dell'app che in modo automatico dovrebbe richiedere i permessi a seconda SDK, è corretta? Manca qualche cosa? e se si dove?
E' per non rompermi le p..... tutte le volte nelle nuove app
E' per non rompermi le p..... tutte le volte nelle nuove app
B4X:
private Sub RequestRuntimePermissions
' ***NEL MANIFEST***
' <uses-Permission android:name="android.permission.CAMERA" />
' <uses-Permission android:name="android.permission.RECORD_AUDIO" />
' <uses-Permission android:name="android.permission.ACCESS_FINE_LOCATION" />
' <uses-Permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
' <uses-Permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
' <uses-Permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
'
' <!-- Android 10+ -->
' <uses-Permission android:name="android.permission.ACCESS_BACKGROUND_LOCATION" />
'
' <!-- Android 11+ -->
' <uses-Permission android:name="android.permission.MANAGE_EXTERNAL_STORAGE" />
'
' <!-- Android 12+ Bluetooth -->
' <uses-Permission android:name="android.permission.BLUETOOTH_SCAN" />
' <uses-Permission android:name="android.permission.BLUETOOTH_CONNECT" />
' <uses-Permission android:name="android.permission.BLUETOOTH_ADVERTISE" />
'
' <!-- Android 13+ media & notifiche & nearby devices -->
' <uses-Permission android:name="android.permission.POST_NOTIFICATIONS" />
' <uses-Permission android:name="android.permission.READ_MEDIA_IMAGES" />
' <uses-Permission android:name="android.permission.READ_MEDIA_VIDEO" />
' <uses-Permission android:name="android.permission.READ_MEDIA_AUDIO" />
' <uses-Permission android:name="android.permission.NEARBY_WIFI_DEVICES" />
'
' <!-- Altri permessi “normali” (non runtime) -->
' <uses-Permission android:name="android.permission.INTERNET" />
' <uses-Permission android:name="android.permission.ACCESS_NETWORK_STATE" />
Dim RP As RuntimePermissions
Dim SDK As Int = Functions.Phone.SdkVersion
Log("SDK:" & SDK)
Dim RPList As List
RPList.Initialize
'Permessi base comuni a SDK >= 23
RPList.Add(RP.PERMISSION_CAMERA)
RPList.Add(RP.PERMISSION_RECORD_AUDIO)
RPList.Add(RP.PERMISSION_ACCESS_FINE_LOCATION)
RPList.Add(RP.PERMISSION_ACCESS_COARSE_LOCATION)
RPList.Add(RP.PERMISSION_READ_EXTERNAL_STORAGE)
RPList.Add(RP.PERMISSION_WRITE_EXTERNAL_STORAGE)
'Android 10+ (SDK 29) – location in background
If SDK >= 29 Then
RPList.Add("android.permission.ACCESS_BACKGROUND_LOCATION")
End If
'Android 11+ (SDK 30) – accesso completo file
If SDK >= 30 Then
' Dichiarato in manifest, ma per l’accesso completo serve andare alle impostazioni
RPList.Add("android.permission.MANAGE_EXTERNAL_STORAGE") ' se previsto
End If
'Android 12+ (SDK 31) – Bluetooth nuovi permessi
If SDK >= 31 Then
RPList.Add("android.permission.BLUETOOTH_SCAN")
RPList.Add("android.permission.BLUETOOTH_CONNECT")
RPList.Add("android.permission.BLUETOOTH_ADVERTISE")
End If
'Android 13 (SDK 33) e oltre – media granulari + notifiche + dispositivi vicini
If SDK >= 33 Then
RPList.Add("android.permission.POST_NOTIFICATIONS")
RPList.Add("android.permission.READ_MEDIA_IMAGES")
RPList.Add("android.permission.READ_MEDIA_VIDEO")
RPList.Add("android.permission.READ_MEDIA_AUDIO")
RPList.Add("android.permission.NEARBY_WIFI_DEVICES")
End If
'***Richiesta effettiva dei permessi
For Each Permission As String In RPList
If RP.Check(Permission) = False Then
RP.CheckAndRequest(Permission)
Wait For Activity_PermissionResult (Permission As String, Result As Boolean)
Log("Permesso:" & Permission & " Concesso: " & Result)
Else
Log("Permesso:" & Permission & " Concesso: True")
End If
Next
End Sub