He estado desarrollando una aplicación que permite que una cadena de tiendas de bebidas muestre, clasifique y personalice sus menús de bebidas de una manera más moderna que montones de menús de papel laminado.
La aplicación está implementada actualmente, pero se hizo muy evidente que se necesita un método para compartir los archivos .db personalizados, a menos que un empleado recurra a simplemente duplicar el trabajo de agregar recetas a cada tableta individualmente.
He improvisado un código de importación/exportación que crea con éxito un archivo de respaldo en una tarjeta microSD externa y puede importar ese archivo .db exportado con éxito. Sin embargo, cuando traté de mover la tarjeta microSD a mi otra tableta con la aplicación instalada, no se pudo encontrar el archivo .db.
protected void importDB() throws IOException { try { File sd = new File(myContext.getExternalFilesDir(null).toString() + "recipes.db"); File data = new File("/data/data/com.raineydesign.reciteateamfuel/databases/recipes.db"); FileChannel src = new FileInputStream(sd).getChannel(); FileChannel dst = new FileOutputStream(data).getChannel(); dst.transferFrom(src, 0, src.size()); src.close(); dst.close(); Toast.makeText(myContext.getApplicationContext(), "Import Successful!", Toast.LENGTH_SHORT).show(); } catch (IOException ioException) { ioException.printStackTrace(); } } protected void exportDB() throws IOException{ try { File sd = new File(myContext.getExternalFilesDir(null).toString() + "recipes.db"); File outputFile= new File("/data/data/com.raineydesign.reciteateamfuel/databases/recipes.db"); Log.e(TAG, String.valueOf(outputFile.exists())); InputStream data = new FileInputStream(outputFile) ; FileOutputStream outputStream = new FileOutputStream(sd); Log.e(TAG, "Databasehelper: Bong"); byte[] buffer = new byte[1024]; int length; while ((length = data.read(buffer)) > 0) { outputStream.write(buffer, 0, length); } //Close the streams data.close(); outputStream.close(); Toast.makeText(myContext.getApplicationContext(), "Backup Successful!", Toast.LENGTH_SHORT).show(); } catch (Exception e) { Toast.makeText(myContext.getApplicationContext(), "Backup Failed!", Toast.LENGTH_SHORT) .show(); } }Sospecho que el problema radica en el uso de 'myContext.getExternalFilesDir(null)' como ruta para mi archivo de copia de seguridad. Sin embargo, exploré a través de los archivos microSD en mi escritorio y pude ubicar fácilmente el archivo de copia de seguridad exactamente donde debería estar en android/data/data/com.raineydesign.reciteateamfuel/databases/ por lo que me hace cuestionar mi suposición.
Si alguien me puede dar algún consejo, se lo agradecería mucho.
getExternalFilesDir() no tiene nada que ver con una tarjeta micro sd extraíble.
Mejor eche un vistazo al segundo elemento devuelto por getExternalFilesDirs()