Italian PERMISSION_WRITE_EXTERNAL_STORAGE senza scheda SD

luciano deri

Active Member
Licensed User
Longtime User
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.
 

Star-Dust

Expert
Licensed User
Longtime User
E lo so ma se non hai il permesso non ci puoi scrivere
Ma l'errore sarà diverso.
B4X:
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 :p
 
D

Deleted member 103

Guest
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
 

LucaMs

Expert
Licensed User
Longtime User
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.
 

udg

Expert
Licensed User
Longtime User
Ciao, io ho trovato questo.
Dal post #12 si parla di una soluzione che sembrava funzionare. Non ho approfondito, comunque.

bye
 
Top