Подтвердить что ты не робот

Как получить путь к файлу с SD-карты в android

Привет всем, у меня есть mp3 файлы на SD-карте. как получить путь к файлу mp3-песни с SD-карты.

пожалуйста, помогите мне.

4b9b3361

Ответ 1

Вы можете получить путь к sdcard из этого кода:

File extStore = Environment.getExternalStorageDirectory();

Затем укажите имя папки и имя файла

например:

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

Ответ 2

этот код помогает легко получить его............

На самом деле в некоторых устройствах по умолчанию имя sdcard отображается как extSdCard, а для других - sdcard1. Этот фрагмент кода помогает узнать этот точный путь и помогает восстановить путь к внешнему устройству.

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); 
}

Ответ 3

Environment.getExternalStorageDirectory() будет НЕ возвращать путь к карте памяти SD..

как получить путь к файлу с SD-карты в android

По карте sd, я предполагаю, что вы имели в виду съемную карту micro SD.

В API-интерфейсе 19, то есть в Android версии 4.4 Kitkat, они добавили File[] getExternalFilesDirs (String type) в Context Класс, который позволяет приложениям хранить данные/файлы на микро SD-картах.

Android 4.4 - это первый выпуск платформы, который фактически разрешил приложениям использовать SD-карты для хранения. Любой доступ к SD-картам до уровня API уровня 19 осуществлялся через частные, неподдерживаемые API.

Environment.getExternalStorageDirectory() был от уровня API 1

getExternalFilesDirs (тип строки) возвращает абсолютные пути к каталогам конкретных приложений на всех устройствах общего доступа/внешних устройств хранения. Это означает, что он вернет пути как к внутренней, так и к внешней памяти. Как правило, второй возвращенный путь будет местом хранения карты microSD (если есть).

Заметим, что

Совместное хранилище не всегда может быть доступно, поскольку съемный носитель может быть выброшен пользователем. Состояние носителя можно проверить, используя getExternalStorageState(File).

В этих файлах нет безопасности. Например, любой приложение WRITE_EXTERNAL_STORAGE может записывать в эти файлы.

Внутренняя и внешняя память терминология в соответствии с Google/официальными документами Android отличается от тем, что мы думаем.

Ответ 4

Используя следующий код, вы можете найти имя, путь, размер, как и вся информация всех аудиофайлов

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());

Ответ 5

Как указывали некоторые люди, официально принятый ответ не совсем возвращает внешнюю съемную SD-карту. И я наткнулся на следующий поток, который предлагает метод, который я тестировал на некоторых устройствах Android, и, похоже, работает надежно, поэтому я подумал о повторном совместном использовании здесь, поскольку я не вижу его в других ответах:

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

Престижность paresh996 для ответа на сам ответ, и я могу подтвердить, что я пробовал Samsung S7 и S7edge и, похоже, работает.

Теперь мне нужен был метод, который возвращал допустимый путь для чтения файлов и считал, что не может быть внешний SD, и в этом случае внутренняя память должна быть возвращена, поэтому я изменил код из paresh996 к этому:

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();
}

Ответ 6

возможно, у вас такая же проблема, как у меня, у моего планшета есть SD-карта, в /mnt/sdcard и внешняя внешняя карта sd была в /mnt/extcard, вы можете посмотреть ее в диспетчере файлов Android, на вашу SD-карту и посмотрите путь к ней.

Надеюсь, что это поможет.