доступ к файлу на SDCard Android - PullRequest
1 голос
/ 15 марта 2011

Я новичок в разработке Android.Я пытаюсь использовать следующий код для отправки по электронной почте файла на вехе Motorola через gmail.

    Intent sendIntent = new Intent(Intent.ACTION_SEND);
    sendIntent.setType("audio/mp3");
    sendIntent.putExtra(Intent.EXTRA_STREAM, "file:///sdcard/king1.mp3");
    sendIntent.putExtra(Intent.EXTRA_SUBJECT, "Subject");
    sendIntent.putExtra(Intent.EXTRA_TEXT, "this is the email content2");
    sendIntent.putExtra(Intent.EXTRA_STREAM, Uri.parse("file:///sdcard/king1.mp3"));
    startActivity(Intent.createChooser(sendIntent, "Title:"));

При выполнении кода отправляется электронное письмо, но отправленное вложение имеет размер 0 КБ.Я видел эту проблему в другом месте в Интернете, но я не уверен, что я указываю правильный путь к файлу.Как я могу узнать точный путь к файлу?Если я подключу его, я получу путь / Volumes / NO NAME / king1.mp3.

Или

Нужно ли сначала читать файл, используя fileinputstream?

Большое спасибо!

Ответы [ 3 ]

2 голосов
/ 15 марта 2011

@ sanna правильно, что вы должны использовать Environment.getExternalStorageDirectory(), однако я бы предложил сначала использовать Environment.getExternalStorageState(), чтобы определить, можете ли вы получить доступ к хранилищу - например, , в вашем примере, когда SD-карта установлена ​​на ПК.

2 голосов
/ 15 марта 2011

Попробуйте

Environment.getExternalStorageDirectory()

, чтобы получить рут sd-карты.

1 голос
/ 07 марта 2013

На моем устройстве внешние данные sd находятся в следующем каталоге с именем external_sd. Environment.getExternalStorageDirectory () предоставляет корневой каталог для SD-карты, но если вы разместили данные на своем устройстве с компьютера, они могут находиться в «file: //» + Environment.getExternalStorageDirectory () + "/ external_sd /"

Это было очевидно только при использовании приложения «Мои файлы» на устройстве, уровень каталога external_sd не виден при подключении к компьютеру через USB.

...