Italian android 12 e runtimepermission

Sagenut

Expert
Licensed User
Longtime User
Dove vuoi scrivere i dati?
 

Fulvio75

Well-Known Member
Licensed User
Dove vuoi scrivere i dati?
Nel telefono come ho sempre fatto, ma senza sd non lo fa

Sempre fatto così
Dim RP As RuntimePermissions

If File.ExternalWritable = True Then
TargetDir = RP.GetSafeDirDefaultExternal("")
Else if File.ExternalWritable = False Then
TargetDir = File.DirInternal

End If
 

Sagenut

Expert
Licensed User
Longtime User
Se vuoi utilizzare
B4X:
RP.GetSafeDirDefaultExternal("")
come avevi scritto all'inizio non ti serve nessuna dichiarazione nel Manifest e nessuna richiesta di permessi nel codice.
 

Fulvio75

Well-Known Member
Licensed User
Ho guardato la SD dentro crea la cartella android e sotto questa c'è la cartella app che dichiari in b4a ovvero io l'ho chiamata test.software.com senza sd non può crearla, e forse va in crash per quello, perché la crea li e non sul telefono?
 

Sagenut

Expert
Licensed User
Longtime User
Forse una qualche impostazione del telefono sull'utilizzo delle memorie?
Non saprei dirti.
 

Fulvio75

Well-Known Member
Licensed User
Visto che le 2 posizioni che indichi nel tuo codice iniziale sono entrambe raggiungibili sempre, non capisco il motivo di quel blocco IF THEN
Perché la prima la vedi sotto android.data.applicazione che io vedo perché non ho aggiornato il telefono, con i nuovi aggiornamenti non si vede più.
L'altra è la cartella interna dell'applicazione che non vedo in ogni caso che è la dirinternal dove viene installata l'applicazione, così mi sembra di aver capito dai codici trovati sul forum.
Oggi farò altre prove poi ti dico, secondo me è quello che incasina android 12.
Comunque il problema lo da solo con dispositivo con slot MicroSD
 
Last edited:

Fulvio75

Well-Known Member
Licensed User
Fatto... Funziona
B4X:
'solo per chiedere i permessi e questo serve se no non va...
  
 RP.CheckAndRequest(RP.PERMISSION_WRITE_EXTERNAL_STORAGE)
 Wait For Activity_PermissionResult (Permission As String, WRITE_FILE As Boolean)
       
 If WRITE_FILE = False Then
           
 End If

 RP.CheckAndRequest(RP.PERMISSION_READ_EXTERNAL_STORAGE)
 Wait For Activity_PermissionResult (Permission As String, READ_FILE As Boolean)
       
 If READ_FILE = False Then
           
  End If

'mettere try perchè se il telefono ha la slot SD probabilmente non tutti lo fanno, ritiene che dentro ci sia la sd anche se non c'è e va in crash
'in questo modo scrive sulla cartella interna che altro non è che android.data.percorso app, che se android aggiornato si vede solo con collegamento a PC
'se invece c'è la SD scriverà li creando adroid.data.percorso app

'se non ha slot SD con rp.GetSafeDirDefaultExternal("") scrive in android.data.percorso app
'con File.DirInternal scrive dove ci sono i file dell'appicazione e non si vede

Try
      
        If File.ExternalWritable = True Then
            TargetDir = rp.GetSafeDirDefaultExternal("")
        Else if File.ExternalWritable = False Then
            TargetDir = File.DirInternal
        End If

    Catch
        TargetDir = File.DirInternal
    End Try
 
Last edited:

Sagenut

Expert
Licensed User
Longtime User
Un altro caso assurdo di cui tenere conto.
 
Cookies are required to use this site. You must accept them to continue using the site. Learn more…