Almacenamiento

SharedPreferences
- Llave - valor
- Datos primitivos
- Los datos persisten aunque el sistema destruya la app.
- Clase SharedPreferences()
- getSharedPreferences(String preferencias, modo acceso) --> Para todas las apps
- getPreferences(modo acceso); --> Sólo para la activity
SharedPreferences
- Podemos acceder en modo lectura o escritura.
- Para consultar
- Para modificar
- Para consultar
//Instanciamos el SharedPreferences
SharedPreferences settings = getSharedPreferences(PREFS_NAME, Context.MODE_PRIVATE);
//Consultamos
boolean silent = settings.getBoolean("myBoolean", false);
//Instanciamos el SharedPreferences
SharedPreferences settings = getSharedPreferences(PREFS_NAME, 0);
//Obtenemos el editor
SharedPreferences.Editor editor = settings.edit();
//Editamos
editor.putBoolean("silentMode", mSilentMode);
//Guardamos los cambios
editor.apply();
Internal Storage
- Los archivos guardados son privados para la app
- Ni el usuario ni las otras aplicaciones pueden acceder.
- Si desinstalamos la app se borran.
String FILENAME = "hello_file";
String string = "hello world!";
//FOS: Clase que escribe bytes en un archivo.
FileOutputStream fos = openFileOutput(FILENAME, Context.MODE_PRIVATE);
fos.write(string.getBytes());
fos.close();
- Los archivos en tiempo de compilación se guardan en:
- Carpeta res/raw.
- Para acceder:
- R.raw.<filename>
Funciones útiles
-
getFilesDir(): Nos devuelve el path absoluto del directorio donde se guardan nuestros archivos.
-
getDir(): Crea o abre (si ya existe) un directorio en nuestro espacio “internal storage”.
-
deleteFile(): Elimina un fichero guardado en nuestro espacio de almacenamiento.
- fileList(): Nos devuelve un array con los archivos guardados por nuestra aplicación.
External storage
- Tarjeta SD
- Memoria Externa (propox
<manifest ...>
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
...
</manifest>
- Cuidado:
- Todas las apps y usuarios pueden acceder y eliminar los archivos.
- Tenemos que comprobar el acceso:
- Lectura y escritura
- Lectura sólo
- null
External storage access
boolean mExternalStorageAvailable = false;
boolean mExternalStorageWriteable = false;
String state = Environment.getExternalStorageState();
if (Environment.MEDIA_MOUNTED.equals(state)) {
// Tenemos acceso al medio, tanto para lectura como escritura
mExternalStorageAvailable = mExternalStorageWriteable = true;
}
else if (Environment.MEDIA_MOUNTED_READ_ONLY.equals(state)) {
// Solo tenemos acceso de lectura
mExternalStorageAvailable = true;
mExternalStorageWriteable = false;
}
else {
// Algo no está correctamente, no podemos leer ni escribir en el medio!
mExternalStorageAvailable = mExternalStorageWriteable = false;
}
Crear archivo
void createExternalStoragePrivateFile() {
// Crea un path que nos indica donde estan los archivos
// privados de nuestra aplicación en el medio.
File file = new File(getExternalFilesDir(null), "DemoFile.jpg");
try {
InputStream is = getResources().openRawResource(R.drawable.balloons);
OutputStream os = new FileOutputStream(file);
byte[] data = new byte[is.available()];
is.read(data);
os.write(data);
is.close();
os.close();
} catch (IOException e) {
// Unable to create file, likely because external storage is
// not currently mounted.
Log.w("ExternalStorage", "Error de escritura " + file, e);
}
}
Ficheros para compartir
Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_MUSIC)
Music/:
El media Scanner clasifica todo el contenido de esta carpeta como música del usuario.
Podcasts/:
El media Scanner clasifica todo el contenido de esta carpeta como podcast.
Ringtones/:
El media Scanner clasifica todo el contenido de esta carpeta como tono de llamada.
Ficheros para compartir
Alarms/:
El media Scanner clasifica todo el contenido de esta carpeta como sonidos de alarma.
Notifications/: El media Scanner clasifica todo el contenido de esta carpeta como tonos de notificación.
Pictures/: Todas las fotos, a excepción de las tomadas por la camera.
Movies/: Todas las películas, a excepción de las tomadas por la cámara.0
Downloads/: Aquí estarán las descargas.
Ficheros para compartir
File path = Environment.getExternalStoragePublicDirectory(.DIRECTORY_PICTURES);
File file = new File(path, "DemoPicture.jpg");
Slides
By marcos_perez
Slides
- 881