Android设备上外部SDCard的文件路径是否始终为“/storage/extSdCard” 是真的吗?如果没有,有多少种变化?

我的应用程序需要它来测试外部 SD卡的可用性。

我正在使用Titanium,它具有方法 Titanium.Filesystem.isExternalStoragePresent()
但即使未安装外部SDCard,它也始终返回true。

我认为它在本地存储中检测到SDCard,因此返回true。但是我真正想要的是检测是否安装了物理SDCard。

我能否仅通过检测文件“/storage/extSdCard” 的存在来做到这一点?

谢谢。

最佳答案



遗憾的是,根据制造商的说法,通往外部存储器的路径并不总是相同的。使用Environment.getExternalStorageDirectory()将返回SD卡的正常路径mnt/sdcard/。但是,例如对于三星设备,SD卡路径位于mnt/extSdCard/mnt/external_sd/下。

因此,一种进行方法是根据每个制造商使用的路径检查外部目录的存在。用这样的东西:

mExternalDirectory = Environment.getExternalStorageDirectory()
            .getAbsolutePath();
    if (android.os.Build.DEVICE.contains("samsung")
            || android.os.Build.MANUFACTURER.contains("samsung")) {
        File f = new File(Environment.getExternalStorageDirectory()
                .getParent() + "/extSdCard" + "/myDirectory");
        if (f.exists() && f.isDirectory()) {
            mExternalDirectory = Environment.getExternalStorageDirectory()
                    .getParent() + "/extSdCard";
        } else {
            f = new File(Environment.getExternalStorageDirectory()
                    .getAbsolutePath() + "/external_sd" + "/myDirectory");
            if (f.exists() && f.isDirectory()) {
                mExternalDirectory = Environment
                        .getExternalStorageDirectory().getAbsolutePath()
                        + "/external_sd";
            }
        }
    }



我还没有尝试代码,但是Dmitriy Lozenko在answer中的方法更有趣。 他的方法返回系统上所有已安装SD卡的路径,而与制造商无关。

关于android - Android的外部SDCard文件路径,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/23123461/

10-11 01:32