Programación y Desarrollo para Android Subforo exclusivo para temas de programación de software para PDAs y desarrollo de aplicaciones, interfaces, etc bajo Android

Respuesta
 
Herramientas
  #1  
Viejo 07/05/14, 20:03:10
Array

[xs_avatar]
pyciy pyciy no está en línea
Miembro del foro
 
Fecha de registro: sep 2012
Localización: jaen
Mensajes: 279
Modelo de smartphone: Nexus 5
Tu operador: Yoigo
copiar bd a paquete de la aplicacion

Hola, soy un poco pesado pero....
En mi aplicacion hago una copia de seguridad de una base de datos interna y la guardo en la sd.
Tengo una base de datos como copia de seguridad creada en la sd. Todo ok.
Ahora quiero restaurar esa base de datos a la aplicacion de nuevo, como lo hago?
Responder Con Cita


  #2  
Viejo 07/05/14, 23:37:03
Array

[xs_avatar]
kriogeN kriogeN no está en línea
Colaborador/a
· Votos compra/venta: (1)
 
Fecha de registro: oct 2010
Localización: Murcia
Mensajes: 4,637
Modelo de smartphone: Samsung Galaxy S7 Edge SM-G935F
Tu operador: Vodafone
El directorio interno de tu aplicación lo puedes sacar con el método getFilesDir() en la Activity.

A partir de ahí, para copiar un fichero a ese directorio pues lo típico, creando un InputStream sobre el fichero de origen y un OutputStream sobre el fichero de destino e ir leyendo los bytes de uno y copiarlo en el otro.
Responder Con Cita
  #3  
Viejo 09/05/14, 10:50:47
Array

[xs_avatar]
oxot oxot no está en línea
Usuario muy activo
 
Fecha de registro: may 2010
Localización: Santiago
Mensajes: 741
Modelo de smartphone: Xiaomi RedRice
Tu operador: Pepephone
Tal cual te lo comenta kriogeN. Has de tener la base de datos interna abierta e ir copiando la de SD sobre la interna. Te dejo un código que usé en un pequeño programa que hice de BD:

Código:
    private void copyDataBase(String path) throws IOException
    {

        File file = new File(path, DB_NAME);
        
        InputStream inputStr = mContext.getAssets().open(DB_NAME + ".DB");
        OutputStream outStr = new FileOutputStream(file);
        byte[] buffer = new byte[1024];
        int length;
    
        try{
            while ((length = inputStr.read(buffer)) > 0)
            {
                try{
                    outStr.write(buffer, 0, length);
                }catch (IndexOutOfBoundsException e){
                    show("copyDataBase: Error while reading the array");
                }
            }
        }finally{
        outStr.flush();
        outStr.close();
        inputStr.close();
        }
    }
Aquí: DB_NAME es el nombre de la base de datos (uso el mismo para la interna que para la externa) que lo tengo en una constante.
El parámetro path de los argumentos es el destino dónde se encuentra la base de datos interna, en mi caso era: /data/data/nombre_del_paquete/databases que es dónde se guardan las BD por defecto.
Luego un simple input-output stream para ir copiando una sobre otra.

Espero te sirva. Un saludo.
Responder Con Cita
  #4  
Viejo 09/05/14, 22:13:18
Array

[xs_avatar]
pyciy pyciy no está en línea
Miembro del foro
 
Fecha de registro: sep 2012
Localización: jaen
Mensajes: 279
Modelo de smartphone: Nexus 5
Tu operador: Yoigo
Ya lo consegui, muchisimas gracias
Responder Con Cita
Respuesta

Estás aquí
Regresar   Portal | Indice > Todo sobre Android > Programación y Desarrollo para Android



Hora actual: 18:11:58 (GMT +2)



User Alert System provided by Advanced User Tagging (Lite) - vBulletin Mods & Addons Copyright © 2024 DragonByte Technologies Ltd.

Contactar por correo / Contact by mail / 邮件联系 /