Italian Permessi da richiedere a seconda dell'SDK del dispositivo

Fulvio75

Well-Known Member
Licensed User
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

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
 

Xfood

Expert
Licensed User
Sarebbe bello in effetti avere un modulo per poter richiamare i permessi, e in base all'sdk utilizza il metodo adeguato ,
Sia in modalita' activity o b4xpage
Con possibilita' di avere i commenti per inserire la strga esatta nel manifest, un po come la lista dei permessi nel manifest sopra.
 
Top