Salve, su A7 mi trovo a chiedere il permesso di usare la scheda di memoria esterna, ma questa non è installata.
Come posso sapere se c'è prima di chiedere il permesso?
Gli utilizzatori sono come le fidanzate, è meglio evitare di fare troppe domande.
Ho trovato questa documentazione ufficiale di Google che dovrebbe essere utile.
Potrebbe servire scrivere del "in-line java code" (c'è gente più veloce ed esperta di me, in questo, per non fare nomi MarcoRome, ad esempio ) prelevandolo dal paragrafo Checking media availability https://developer.android.com/guide/topics/data/data-storage.html#filesExternal
Try
' codice
Catch
if LastException.Message="..." then
'Manca permesso
else if LastException.Message=".." then
' Manca SD
else
' manca la volontà
end if
End Try
Comunque qualche domanda falla alla fidanzata, sopratutto se vedi che il postino consegna la posta troppo spesso a casa sua
Prova a usare questo codice, ci deve dare solo un'aggiustatina per il tuo caso.
B4X:
If mBBL.getSDKVersion >= 19 Then
SDCardDir = FindSDCardDir 'File.DirInternal
'Log("SDCardDir=" & SDCardDir)
Else
SDCardDir = File.DirDefaultExternal
End If
Public Sub FindSDCardDir As String
Dim SDDir As String = ""
Dim paths() As Object = GetContext.RunMethod("getExternalFilesDirs", Array(Null))
If paths.Length > 1 And paths(1) <> Null Then
SDDir = paths(1) 'Das ist der Path von der SD-Karte
End If
' For Each p As Object In paths
' Log(p)
' Next
If SDDir <> "" Then
Return SDDir
Else
If File.Exists(File.DirDefaultExternal, "") Then
Return File.DirDefaultExternal
Else
Return File.DirInternal
End If
End If
End Sub
Private Sub GetContext As JavaObject
Return GetBA.GetField("context")
End Sub
Private Sub GetBA As JavaObject
Dim jo As JavaObject
Dim cls As String = Me
cls = cls.SubString("class ".Length)
jo.InitializeStatic(cls)
Return jo.GetFieldJO("processBA")
End Sub
No, comunque non va bene, perché la scrittura andrebbe indirizzata alla DirDefaultExternal, che in moltissimi dispositivi corrisponde ugualmente ad una zona di memoria interna.
P.S. mi riferisco ai post precedenti, non a quello sopra di Filippo, che è "arrivato" contemporaneamente a questo.