Android SDcard路径同义词

时间:2012-06-09 10:21:37

标签: java android file-io

我有一个奇怪的问题:这次一切正常,但我无法理解为什么。

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卡将被挂载到其他目录(例如,/mnt/another-sd/甚至/media/sd)会发生什么?如果安装了多张SD卡怎么办:android如何理解使用什么卡?

感谢您的帮助!祝你有个美好的一天!

1 个答案:

答案 0 :(得分:0)

这是简单的android配置挂载在手机启动的设置文件上,所以如果有mor sdcards Android将只是喜欢其中一个设置为

  

/ SD卡/

因此,当安装设置更改时,您的代码根本无用,您只能希望设置不受影响。 每个采用Android智能手机的公司都使用“sdcard”路径甚至自定义roms就像使用它一样