Acceso al almacenamiento en el rincón

Lo más parecido a la documentación que puedo encontrar que tiene que ver con el almacenamiento de archivos esesta publicació (vea a continuación si no puede acceder), pero me deja con varias preguntas.

Realmente me gustaría una explicación bien informada de qué rutas se asignan a qué almacenamiento aquí, viendo cómo se supone que debemos codificarlas y con qué precisión se espera que accedamos a ellas. Una muestra de código real sería superlativa. Mi mejor conjetura de jugar con esto es que:

/ sdcard-> se asigna a la ranura interna eMMC y el acceso está restringido. Environment.getExternalStorageDirectory (); ... todavía devuelve esto. / media -> se asigna a la memoria interna de 8 GB (puedo escribir en esto) / data ->?? -> asigna a la tarjeta microSD opcional

¿Cómo podemos acceder a la tarjeta sd externa (opcional, adicional, la que puede sacar), si / sdcard asigna al almacenamiento restringido en su lugar?

Ahora para citar los documentos de desarrollador de Nook:

Fondo Hay dos esquemas de partición diferentes para los dispositivos NOOK Color en el mercado hoy en día, uno con solo 250 MB disponibles para aplicaciones en la partición / data y otro con 4GB disponibles para aplicaciones en la partición / data. Como resultado, es imperativo que las aplicaciones se diseñen y desarrollen de tal manera que administren el espacio de manera efectiva. Las solicitudes que no lo hagan no serán aceptadas para su distribución a través de la Tienda.

ecomendación o solución técnica asociada a @Area si su aplicación requiere una gran cantidad de datos (incluidos, entre otros, imágenes, contenido de audio o video), debe descargar esos recursos en tiempo de ejecución y almacenarlos en la partición más grande del dispositivo. Si su aplicación va a solicitar y almacenar más de 100 MB de datos o recursos, DEBE cumplir con las siguientes restricciones:

Su aplicación debe indicar clara y explícitamente en la descripción, siempre que la aplicación utilice / entregue una gran cantidad de datos. DEBE escribir sus recursos y datos en la partición adecuada. Puede detectar si el dispositivo tiene una partición ampliada / de datos de la siguiente manera:

StatFs stat = new StatFs("/data"); 
long bytesAvailable = (long)stat.getBlockSize() *(long)stat.getBlockCount(); 
long megAvailable = bytesAvailable / 1048576; 
if (megAvailable > 1000){   
... write your resources in /data
} else {  
... write your resources on /mnt/media ... 
} 

Para escribir datos en el espacio privado de su aplicación en / data

FileOutputStream fos = openFileOutput(FILENAME, Context.MODE_WORLD_READABLE); 

Su aplicación NO debe asumir la presencia de una tarjeta sd en el dispositivo, pero puede probarla a través de una llamada a

Environment.getExternalStorageState (); Si no se encuentra una tarjeta SD, su aplicación DEBE salir correctamente con una notificación al usuario sobre el motivo de la salida.

Recuerde que para acceder a la partición / media, así como a ExternalStorage, debe declarar en su manifiesto:

<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE">
</uses-permission>

Respuestas a la pregunta(2)

Su respuesta a la pregunta