如何在android中获取所有内存路径(内部或外部内存)列表

时间:2013-05-14 12:43:46

标签: android android-sdcard

我在Android设备中检测所有内存路径时遇到问题。 如果我们尝试提供提示和示例,我们无法获得适当的外部存储路径。

例如:

如果我们尝试在Samsung Tab 2中获取外部存储器 使用的代码::

  

Environment.getExternalStorageDirectory()。getAbsolutePath()

它将为我们提供内部装载的内存路径。 //存储/ sdcard0 /

经过大量的谷歌搜索后,我发现了一个显示设备所有路径的应用程序

应用程序名称“ ES Explorer ” 此应用程序显示所有内存路径。

请向我们提供任何解决方案,以便我们解决问题

3 个答案:

答案 0 :(得分:1)

除了标准Android SDK特别支持的那些类型的存储卷外,还有各种独特的供应商和版本。

您可以通过将/proc/mounts作为文本文件来查找所有已安装的文件系统。

然而:

  • 这只会找到实际安装的文件系统 - 例如,如果应用程序将它们作为任意USB附件处理,它将找不到USB存储卷,而不是由Android操作系统安装的Linux操作系统。

  • 您必须应用一些逻辑来过滤掉所有其他不是通用存储设备并显示在列表中的各种文件系统。过去,您可以通过查找"vfat"作为类型来检测“外部”存储卷,但在最近的Android版本中不再使用

  • 特别是在最近的Android版本中,从/proc/mounts发现的mount的实际路径和通常使用的路径可能不匹配,因为习惯路径可能会通过多个符号级别重定向到实际路径链接

答案 1 :(得分:0)

不幸的是,三星处理其存储的方式与其他一些设备略有不同。自从他们的Android 3.2版本以来,他们也不允许通过常规应用程序写入外部存储。话虽这么说,您仍然可以读取(访问)外部存储。以下是两个可能的外部存储位置的路径。我实际上专门为Galaxy Tab 2.0(7英寸)编程,所以在这里你去:

插入的microSD卡:mnt/extSdCard
通过三星USB适配器连接外部存储:mnt/UsbDriveA
“sdcard”存储(不是插入的SD卡):getExternalStorageDirectory()如您所知。

我尝试过多种方法来使用函数来查找路径,但是从未有过任何运气。但是,这有效,所以我很满意。我希望它也可以帮助你。

答案 2 :(得分:-1)

请尝试使用以下代码。

public static File FileCache(Context context) {
    // Find the dir to save cached images
    File cacheDir;
    if (android.os.Environment.getExternalStorageState().equals(
            android.os.Environment.MEDIA_MOUNTED))
        cacheDir = new File(
                android.os.Environment.getExternalStorageDirectory(),
                "TechTool_Pdf");
    else
        cacheDir = context.getCacheDir();
    if (!cacheDir.exists())
        cacheDir.mkdirs();
    return cacheDir;
}