Hola, buenas...
Acabo de cambiar de movil y tengo unos programas que voy pasando de un teléfono a otro desde hace años. Resulta que con las nuevas versiones de Android, en este caso 11, al ejecutar el programa, no se crea por defecto el directorio de trabajo "DirDefaultExternal", como es la carpeta que utilizo por defecto, el programa da error y no funciona. Con el comando "file.MakeDir" he intentado crear los directorios y aunque no da error al ejecutarlo, los directorios no se crean.... he intentado todos los permisos, actualizado B4A, actualizar JAVA, JDK....no encuentro la manera de hacerlo funcionar. También he añadido al MANIFEST la linea AddManifestText(<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>) pero sigue sin funcionar.
He hecho un programa de ejemplo, sólo para crear los directorios, pongo aquí el código.
Acabo de cambiar de movil y tengo unos programas que voy pasando de un teléfono a otro desde hace años. Resulta que con las nuevas versiones de Android, en este caso 11, al ejecutar el programa, no se crea por defecto el directorio de trabajo "DirDefaultExternal", como es la carpeta que utilizo por defecto, el programa da error y no funciona. Con el comando "file.MakeDir" he intentado crear los directorios y aunque no da error al ejecutarlo, los directorios no se crean.... he intentado todos los permisos, actualizado B4A, actualizar JAVA, JDK....no encuentro la manera de hacerlo funcionar. También he añadido al MANIFEST la linea AddManifestText(<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>) pero sigue sin funcionar.
He hecho un programa de ejemplo, sólo para crear los directorios, pongo aquí el código.
Crear Directorio:
Sub Globals
Dim Rp As RuntimePermissions
Dim DirTra As String
End Sub
Sub Activity_Create(FirstTime As Boolean)
If File.ExternalWritable Then
Msgbox("Tiene permisos para escribir en la memoria externa", "¡¡¡ Atención !!!")
Else
Msgbox("NO hay permisos para escribir en la memoria externa","¡¡¡ Atención !!!")
End If
Rp.CheckAndRequest(Rp.PERMISSION_WRITE_EXTERNAL_STORAGE)
If File.ExternalWritable Then
Msgbox("Tiene permisos para escribir en la memoria externa", "¡¡¡ Atención !!!")
Else
Msgbox("NO hay permisos para escribir en la memoria externa","¡¡¡ Atención !!!")
End If
If Not(File.ExternalWritable) Then
Msgbox("No se puede grabar en la memoria externa...","¡¡¡ Atención !!!")
End If
DirTra=File.DirDefaultExternal
Dim paths() As Object = GetContext.RunMethod("getExternalFilesDirs", Array(Null))
For Each p As Object In paths
Log(p)
Dim str As String = p
If Not(str.Contains("emulated")) Then
DirTra=p
End If
Next
Dim nDir, dDir As String=""
For i=2 To DirTra.Length -2
If DirTra.SubString2(i,i+1)="/" Then
dDir=DirTra.SubString2(0,i)
Try
nDir=DirTra.SubString2(i+1,DirTra.IndexOf2("/",i+2))
Catch
nDir=DirTra.SubString(i+1)
End Try
If Not(File.Exists(dDir,nDir)) Then
Try
File.MakeDir(dDir,nDir)
Catch
File.MakeDir(dDir,nDir)
End Try
End If
End If
Next
End Sub
Last edited: