Spanish [SOLUCIONADO] Error en Tablet con File.DirInternal

desof

Well-Known Member
Licensed User
Longtime User
Hola estoy utilizando este trozo de código
B4X:
If Not(File.Exists(File.DirInternal, "telefonos.db")) Then
        File.Copy(File.DirAssets, "telefonos.db", File.DirInternal, "telefonos.db")
    End If

y anda correcto en 2 dispositivos físicos y en el emulador pero NO en una Tablet QUE me da error en la linea File.Copy(File.DirAssets, "telefonos.db", File.DirInternal, "telefonos.db")
Y se cierra el programa.

Se me ocurrió cambiar el directorio por DirInternalCache
B4X:
    If Not(File.Exists(File.DirInternalCache, "comercios.db")) Then
        Msgbox ("COPIADA LA BD","")
        File.Copy(File.DirAssets, "comercios.db", File.DirInternalCache, "comercios.db")
    End If

y ALLI ANDA en todos lados pero no se si es la solución correcta ya que estoy trabajando con BASES de DATOS y son el corzon de la app. Y no comprendo muy bien lo de los distintos directorios.

Me podrían ayudar en esto ?

Gracias!


 

bgsoft

Well-Known Member
Licensed User
Longtime User
Hola Desoft:

Eso que te pasa en la tablet es raro, por que ese directorio es correcto para escribir, prueba a copiarlo al directorio de la aplicación File.DirDefaultExternal , es un directorio de la aplicación, y otra aplicación no podrá acceder a el.

Por otro lado, para evitar que se te cierre la aplicación, emplea el control de errores (Try), algo asi:

B4X:
If Not(File.Exists(File.DirInternal, "telefonos.db")) Then
   Try
        File.Copy(File.DirAssets, "telefonos.db", File.DirInternal, "telefonos.db")
   Catch
     Msgbox ("No se pudo copiar la BD","")
   End Try

End If

Saludos
 

desof

Well-Known Member
Licensed User
Longtime User
Hola Desoft:

Eso que te pasa en la tablet es raro, por que ese directorio es correcto para escribir, prueba a copiarlo al directorio de la aplicación File.DirDefaultExternal , es un directorio de la aplicación, y otra aplicación no podrá acceder a el.

Por otro lado, para evitar que se te cierre la aplicación, emplea el control de errores (Try), algo asi:

B4X:
If Not(File.Exists(File.DirInternal, "telefonos.db")) Then
   Try
        File.Copy(File.DirAssets, "telefonos.db", File.DirInternal, "telefonos.db")
   Catch
     Msgbox ("No se pudo copiar la BD","")
   End Try

End If

Saludos

Se soluciono colocando File.DirDefaultExternal
 
Top