У меня есть немного странный вопрос: на этот раз все работает, но я не могу понять почему.Android SD card path synonims
AFAIK можно установить более одной SD-карты. Все будет смонтировано в каталоге /mnt
. (это правда?)
На моем устройстве есть только одна SD-карта, которая установлена на /mnt/sdcard
. И в моем приложении я открываю файлы из него. Я использую следующий код:
private void open() {
// get file extension
String extension = "";
int dotIndex = downloadedFile.lastIndexOf('.');
if (dotIndex != -1) {
extension = downloadedFile.substring(dotIndex + 1, downloadedFile.length());
}
// create an intent
Intent intent = new Intent(android.content.Intent.ACTION_VIEW);
Uri data = Uri.fromFile(new File(downloadedFile));
String type = MimeTypeMap.getSingleton().getMimeTypeFromExtension(extension);
if (type == null || type.length() == 0) {
// if there is no acceptable mime type
type = "application/octet-stream";
}
intent.setDataAndType(data, type);
// get the list of the activities which can open the file
List resolvers = context.getPackageManager().queryIntentActivities(intent, PackageManager.MATCH_DEFAULT_ONLY);
if (resolvers.isEmpty()) {
(new AlertDialog.Builder(context)
.setMessage(R.string.AttachmentUnknownFileType)
.setNeutralButton(R.string.NeutralButtonText, null)
.create()).show();
} else {
context.startActivity(intent);
}
}
На самом деле downloadedFile
переменная имеет значение, как file:///sdcard/mydir/myfile.txt
. Но код работает. Зачем? Как Android понимает, что такое /sdcard/...
такое же, как /mnt/sdcard/...
?
И главный вопрос: что произойдет, если SD-карта будет установлена на другой каталог (для exmaple, /mnt/another-sd/
или даже /media/sd
)? Что делать, если будет установлено более одного SD-карты: как андроид понимает, какую карту использовать?
Благодарим за помощь! Хорошего дня!
Итак, точка подключения sd-карты описана в 'fstab'? –
да, о чем говорится в vold.fstab –
, а как насчет разных путей к папке? Почему path 'file: /// sdcard /' совпадает с '/ mnt/sdcard'? –