2012-04-13 12 views
7

Estoy desarrollando una aplicación que necesita para escribir archivos en la tarjeta SD. Estoy usando GetExternalStoragePublicDirectory() para determinar el directorio en el que escribir.escribir archivo en la tarjeta SD y no en el almacenamiento usb

Tengo dos teléfonos con los que estoy desarrollando. En un Google Nexus S, con Android 4.0.4 (Ice Cream Sandwich) está devolviendo un directorio en la tarjeta SD. Sin embargo, en un Samsung Exhibit 2 con Android 2.3.5, está escribiendo directamente en el almacenamiento USB del teléfono.

¿Hay alguna manera de forzar la tarjeta SD?

edición:

me encontré con que getExternalStoragePublicDirectory(), y getExternalStorageDirectory() siempre están regresando "/ mnt/sdcard /". Esta no es realmente la ubicación de montaje para la tarjeta sd. En Samsung Exhibit 2, esta es la ubicación de almacenamiento USB. La ubicación del montaje de la tarjeta es "/ mnt/sdcard/external_sd". ¿Hay alguna forma de devolver esta ubicación real de SD?

Veo que la cámara y otras aplicaciones han encontrado la manera de hacerlo. La aplicación de la cámara tiene una configuración de "almacenamiento" con opciones de "teléfono" y "tarjeta de memoria". Si se especifica "tarjeta de memoria", las imágenes se almacenan realmente en la tarjeta sd.

+1

+1 "Android se ejecutará siempre de la misma manera en todos los dispositivos", mejor usamos "plataforma de desarrollo independiente" jajaja. Motorola Defy: sdcard-ext (no subrayado) –

Respuesta

2

¿Hay una manera de devolver esta ubicación real del sd?

No, lo siento, no en el SDK de Android actual.

Veo que la cámara y otras aplicaciones han encontrado la manera de hacerlo.

En su mayoría, o bien se los escritos por el fabricante del dispositivo, o están leyendo información a través de MediaStore, que debería índice de ambas fuentes.

0

Si desea escribir en la tarjeta SD sólo se utilice

File mySdCardPath = Environment.getExternalStorageDirectory(); 
File dir = new File (mySdCardPath.getAbsolutePath() + "/yourDirectoryName"); 
+1

La solución descrita tiene el mismo comportamiento en ambos teléfonos que el uso de GetExternalPublicDirectory ("yourDirectoryName"). El directorio que se devuelve desde GetExternalStorageDirectory() es en realidad "/ mnt/sdcard". Aparentemente en Samsung Exhibit 2, este es el almacenamiento USB. La tarjeta sd real está en "/ mnt/sdcard/external_sd". Aparentemente este es un problema conocido. ver: http://stackoverflow.com/q/5694933/758074 –

Cuestiones relacionadas