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.
 
Cookies are required to use this site. You must accept them to continue using the site. Learn more…