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: 
			
		
	
								
								
									
	
								
							
							 
				 
 
		 
 
		 
 
		 
 
		 
 
		