2011-11-16 23 views
10

¿Es posible encontrar la etiqueta de volumen de la tarjeta SD insertada en el dispositivo Android?Buscar etiqueta de volumen de tarjeta SD en Android

Entiendo que Android está diseñado para tener solo un "almacenamiento externo" (como lo devuelve Environment.getExternalStorageDirectory()), pero hay bastantes dispositivos en la naturaleza que tienen flash interno como "almacenamiento externo" y una tarjeta SD montada debajo eso o incluso combinaciones más salvajes (ver this other question). Es posible enumerar estos dispositivos adicionales leyendo /proc/mounts, pero necesitamos algo para identificarlos al usuario. ¿Hay alguna posibilidad de llegar a sus etiquetas de volumen?

Comprobé ese controlador Linux vfat ignores the volume label dentry altogether y blkid de util-linux reads the vfat itself. También verifiqué que, al menos en el dispositivo que tengo, el dispositivo de bloque de la tarjeta SD tiene el modo 660 y el propietario root.root, así que no puedo hacer eso. Entonces, básicamente, se reduce a si hay alguna utilidad que pueda leerlo disponible.

+1

de mayo Esto le ayudará a http://stackoverflow.com/questions/3348643/how-to-read-the-sd-card-id-number/5191484#5191484 –

+0

@Drax: No, no puede (además, ya sabemos eso). No tiene ninguna relación con la etiqueta de volumen. La etiqueta de volumen es lo que el usuario * especifica * cuando formatea la tarjeta SD en su computadora. –

Respuesta

0

no sé cómo funciona exactamente en android, pero en Linux tengo un mensaje del kernel sobre el montaje de la tarjeta SD, donde se especifica el nombre del volumen. Puede probar dmesg y cat/sys/devices/mmc ... (o algo así)

+0

Dmesg no puede tenerlo si el conductor lo ignora por completo, ¿o sí? Y como ya se mencionó en los comentarios, '/ sys/devices/mmc ...' es completamente diferente (tiene CID, que usamos, pero no tiene la etiqueta de volumen, que es una cosa del sistema de archivos, no una SD cosa de la tarjeta). –

0

Intente analizar la salida del comando blkid. Funciona para mí, pero no estoy seguro de si es una función dependiente del firmware o no. Obtuve permission denied con este comando en AVD.

+0

El comando no está allí en los dispositivos que tenemos. Y si lo compilé yo mismo, no funcionaría, porque no tendría permisos. –

+0

'blkid' funciona sin permisos de root tanto en mi dispositivo (con firmware 2.2 personalizado) como en mi sistema de escritorio Linux. Por lo tanto, como último recurso, puede intentar incluir la funcionalidad 'blkid' en su proyecto con la ayuda de NDK. No es fácil, sin embargo ... – borisstr

+0

Por supuesto que funciona en el escritorio, pero eso es totalmente irrelevante ya que no es Android. También podría funcionar con firmware personalizado de Android, pero eso aún es irrelevante, porque los usuarios aleatorios no tienen firmware personalizado. El firmware estándar no lo tiene y no permite leer el dispositivo sin procesar de la aplicación normal. –

1

He encontrado una solución.

La solución más fácil es construir busybox y utilizar de esta manera: busybox blkid

solución complicado es encontrar blkid para Android y encontrar lo que necesita en su código fuente (función blkid_dev_devname).

-1

No sé si esto puede ayudarlo: si utiliza el DDMS, puede ver las carpetas del sistema. En mi caso, encontré la tarjeta sd en:/mnt/media_rw.

Puede obtener más información here y here

espero que ayude.

+0

No, no ayuda, porque ddms no se está ejecutando en el dispositivo. Ahora bien, si encontraste dónde los recibe ddms, podría ser otro asunto. –

+0

No ejecuto el DDMS en el dispositivo. Ejecuto el DDMS en mi computadora, que está conectada al dispositivo. Por supuesto, su computadora debe reconocer el dispositivo. –

+0

Y, por lo tanto, DDMS es totalmente inútil para un dispositivo en la mano de alguien en un tren. Sí, la pregunta no lo dice explícitamente, pero si tiene una computadora para analizar el dispositivo y saber cómo, casi seguro que ya conoce las etiquetas de todos modos. El caso más interesante es obtener las etiquetas de una aplicación en el dispositivo. –

Cuestiones relacionadas