2012-06-09 2 views
0

У меня есть немного странный вопрос: на этот раз все работает, но я не могу понять почему.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-карты: как андроид понимает, какую карту использовать?

Благодарим за помощь! Хорошего дня!

ответ

0

Это просто андроид configueres монтажный над файлом установки при загрузке телефона, так что если есть мор sdcards Android просто предпочитает один из них, чтобы установить, как

/SDCard/

так, когда настройки монтирования изменяют ваш код просто бесполезно, вы можете только надеяться, что настройки не тронуты. Каждая компания, которая выпускает Android-смартфоны, использует путь «sdcard», даже пользовательские ромы, например, используют его

+0

Итак, точка подключения sd-карты описана в 'fstab'? –

+0

да, о чем говорится в vold.fstab –

+0

, а как насчет разных путей к папке? Почему path 'file: /// sdcard /' совпадает с '/ mnt/sdcard'? –

Смежные вопросы