studio sdcard programacion móviles libro desarrollo curso aplicaciones android

sdcard - cómo obtener la ruta del archivo de la tarjeta SD en Android



manual de programacion android pdf (7)

Al usar el siguiente código, puede encontrar el nombre, la ruta, el tamaño, así como todo tipo de información de todos los archivos de canciones de audio.

String[] STAR = { "*" }; Uri allaudiosong = MediaStore.Audio.Media.EXTERNAL_CONTENT_URI; String audioselection = MediaStore.Audio.Media.IS_MUSIC + " != 0"; Cursor cursor; cursor = managedQuery(allaudiosong, STAR, audioselection, null, null); if (cursor != null) { if (cursor.moveToFirst()) { do { String song_name = cursor .getString(cursor .getColumnIndex(MediaStore.Audio.Media.DISPLAY_NAME)); System.out.println("Audio Song Name= "+song_name); int song_id = cursor.getInt(cursor .getColumnIndex(MediaStore.Audio.Media._ID)); System.out.println("Audio Song ID= "+song_id); String fullpath = cursor.getString(cursor .getColumnIndex(MediaStore.Audio.Media.DATA)); System.out.println("Audio Song FullPath= "+fullpath); String album_name = cursor.getString(cursor .getColumnIndex(MediaStore.Audio.Media.ALBUM)); System.out.println("Audio Album Name= "+album_name); int album_id = cursor.getInt(cursor .getColumnIndex(MediaStore.Audio.Media.ALBUM_ID)); System.out.println("Audio Album Id= "+album_id); String artist_name = cursor.getString(cursor .getColumnIndex(MediaStore.Audio.Media.ARTIST)); System.out.println("Audio Artist Name= "+artist_name); int artist_id = cursor.getInt(cursor .getColumnIndex(MediaStore.Audio.Media.ARTIST_ID)); System.out.println("Audio Artist ID= "+artist_id); } while (cursor.moveToNext());

Hola, tengo todos los archivos mp3 en mi tarjeta SD. cómo obtener la ruta del archivo de la canción mp3 de la tarjeta sd.

por favor ayúdame


Como algunas personas indicaron, la respuesta oficialmente aceptada no devuelve la tarjeta SD externa extraíble. Y me encontré con el siguiente hilo que propone un método que he probado en algunos dispositivos Android y parece funcionar de manera confiable, así que pensé en volver a compartirlo aquí ya que no lo veo en las otras respuestas:

http://forums.androidcentral.com/samsung-galaxy-s7/668364-whats-external-sdcard-path.html

Felicitaciones a paresh996 por dar con la respuesta en sí misma, y ​​puedo dar fe de que probé con Samsung S7 y S7edge y parece que funciona.

Ahora, necesitaba un método que devolviera una ruta válida donde leer archivos, y que considerara el hecho de que podría no haber una SD externa, en cuyo caso debería devolverse el almacenamiento interno, así que modifiqué el código de paresh996 a este:

File getStoragePath() { String removableStoragePath; File fileList[] = new File("/storage/").listFiles(); for (File file : fileList) { if(!file.getAbsolutePath().equalsIgnoreCase(Environment.getExternalStorageDirectory().getAbsolutePath()) && file.isDirectory() && file.canRead()) { return file; } } return Environment.getExternalStorageDirectory(); }


Hay diferentes nombres de tarjetas SD. Este código verifica todos los nombres posibles (no garantizo que estos sean todos nombres pero la mayoría están incluidos)

Prefiere el almacenamiento principal.

private String SDPath() { String sdcardpath = ""; //Datas if (new File("/data/sdext4/").exists() && new File("/data/sdext4/").canRead()){ sdcardpath = "/data/sdext4/"; } if (new File("/data/sdext3/").exists() && new File("/data/sdext3/").canRead()){ sdcardpath = "/data/sdext3/"; } if (new File("/data/sdext2/").exists() && new File("/data/sdext2/").canRead()){ sdcardpath = "/data/sdext2/"; } if (new File("/data/sdext1/").exists() && new File("/data/sdext1/").canRead()){ sdcardpath = "/data/sdext1/"; } if (new File("/data/sdext/").exists() && new File("/data/sdext/").canRead()){ sdcardpath = "/data/sdext/"; } //MNTS if (new File("mnt/sdcard/external_sd/").exists() && new File("mnt/sdcard/external_sd/").canRead()){ sdcardpath = "mnt/sdcard/external_sd/"; } if (new File("mnt/extsdcard/").exists() && new File("mnt/extsdcard/").canRead()){ sdcardpath = "mnt/extsdcard/"; } if (new File("mnt/external_sd/").exists() && new File("mnt/external_sd/").canRead()){ sdcardpath = "mnt/external_sd/"; } if (new File("mnt/emmc/").exists() && new File("mnt/emmc/").canRead()){ sdcardpath = "mnt/emmc/"; } if (new File("mnt/sdcard0/").exists() && new File("mnt/sdcard0/").canRead()){ sdcardpath = "mnt/sdcard0/"; } if (new File("mnt/sdcard1/").exists() && new File("mnt/sdcard1/").canRead()){ sdcardpath = "mnt/sdcard1/"; } if (new File("mnt/sdcard/").exists() && new File("mnt/sdcard/").canRead()){ sdcardpath = "mnt/sdcard/"; } //Storages if (new File("/storage/removable/sdcard1/").exists() && new File("/storage/removable/sdcard1/").canRead()){ sdcardpath = "/storage/removable/sdcard1/"; } if (new File("/storage/external_SD/").exists() && new File("/storage/external_SD/").canRead()){ sdcardpath = "/storage/external_SD/"; } if (new File("/storage/ext_sd/").exists() && new File("/storage/ext_sd/").canRead()){ sdcardpath = "/storage/ext_sd/"; } if (new File("/storage/sdcard1/").exists() && new File("/storage/sdcard1/").canRead()){ sdcardpath = "/storage/sdcard1/"; } if (new File("/storage/sdcard0/").exists() && new File("/storage/sdcard0/").canRead()){ sdcardpath = "/storage/sdcard0/"; } if (new File("/storage/sdcard/").exists() && new File("/storage/sdcard/").canRead()){ sdcardpath = "/storage/sdcard/"; } if (sdcardpath.contentEquals("")){ sdcardpath = Environment.getExternalStorageDirectory().getAbsolutePath(); } Log.v("SDFinder","Path: " + sdcardpath); return sdcardpath; }


Puede obtener la ruta de la tarjeta SD desde este código:

File extStore = Environment.getExternalStorageDirectory();

A continuación, especifique el nombre de la carpeta y el nombre del archivo

por ejemplo:

"/LazyList/"+serialno.get(position).trim()+".jpg"


este código ayuda a obtenerlo fácilmente ............

En realidad, en algunos dispositivos el nombre predeterminado de sdcard externo se muestra como extSdCard y para otros es sdcard1. Este fragmento de código ayuda a descubrir esa ruta exacta y ayuda a recuperar la ruta del dispositivo externo.

String sdpath,sd1path,usbdiskpath,sd0path; if(new File("/storage/extSdCard/").exists()) { sdpath="/storage/extSdCard/"; Log.i("Sd Cardext Path",sdpath); } if(new File("/storage/sdcard1/").exists()) { sd1path="/storage/sdcard1/"; Log.i("Sd Card1 Path",sd1path); } if(new File("/storage/usbcard1/").exists()) { usbdiskpath="/storage/usbcard1/"; Log.i("USB Path",usbdiskpath); } if(new File("/storage/sdcard0/").exists()) { sd0path="/storage/sdcard0/"; Log.i("Sd Card0 Path",sd0path); }


tal vez estés teniendo el mismo problema que tuve, mi tableta tiene una tarjeta SD, en / mnt / sdcard y la tarjeta sd externa estaba en / mnt / extcard, puedes buscarla en el administrador de archivos de Android, yendo a tu SD tarjeta y ver el camino hacia ella.

Espero eso ayude.


Environment.getExternalStorageDirectory() NO devolverá la ruta de almacenamiento de la tarjeta micro SD .

cómo obtener la ruta del archivo de la tarjeta SD en Android

Por tarjeta sd , supongo que se refería a una tarjeta micro SD extraíble .

En el nivel API 19, es decir, en la versión 4.4 de Android Kitkat, han agregado File[] getExternalFilesDirs (String type) en la clase Context que permite que las aplicaciones almacenen datos / archivos en tarjetas micro SD.

Android 4.4 es el primer lanzamiento de la plataforma que ha permitido que las aplicaciones usen tarjetas SD para almacenamiento. Cualquier acceso a tarjetas SD antes del nivel 19 de la API se realizó a través de API privadas y no compatibles.

Environment.getExternalStorageDirectory() estaba allí desde el nivel 1 de la API

getExternalFilesDirs (tipo de cadena) devuelve rutas absolutas a directorios específicos de la aplicación en todos los dispositivos de almacenamiento compartidos / externos. Significa que devolverá rutas a la memoria interna y externa. Generalmente, la segunda ruta devuelta sería la ruta de almacenamiento para la tarjeta microSD (si corresponde).

Pero ten en cuenta que

El almacenamiento compartido puede no estar siempre disponible, ya que el usuario puede expulsar el medio extraíble. El estado del medio se puede verificar usando getExternalStorageState(File) .

No se aplica seguridad con estos archivos. Por ejemplo, cualquier aplicación que tenga WRITE_EXTERNAL_STORAGE puede escribir en estos archivos.

La terminología de almacenamiento interno y externo según Google / documentos oficiales de Android es bastante diferente de lo que pensamos.