Android 4.4.2-读取外部SD卡目录?

Android 4.4.2-读取外部SD卡目录?,android,Android,如何从Xperia Z1上的SD卡读取文件 Environment.getExternalStorageDirectory()指向内部内存 我想要使用外部SD卡,您需要使用以下功能: new File("/mnt/external_sd/") 或 就你而言 替换为Environment.getExternalStorageDirectory() 对我有用。您应该首先检查目录mnt中的内容,然后从那里开始工作 您应该使用某种类型的选择方法来选择要使用的SD卡: File storageDir =

如何从Xperia Z1上的SD卡读取文件


Environment.getExternalStorageDirectory()
指向内部内存

我想要使用外部SD卡,您需要使用以下功能:

new File("/mnt/external_sd/")

就你而言

替换为Environment.getExternalStorageDirectory()

对我有用。您应该首先检查目录mnt中的内容,然后从那里开始工作

您应该使用某种类型的选择方法来选择要使用的SD卡:

File storageDir = new File("/mnt/");
if(storageDir.isDirectory()){
    String[] dirList = storageDir.list();
    //TODO some type of selecton method?
}
根据文档,外部存储目录“传统上是[…]SD卡,但它也可以作为内置存储实现在设备中,与受保护的内部存储不同,可以作为文件系统安装在计算机上。”

此外,“如果该目录已被用户安装在其计算机上、已从设备中删除或发生其他问题,则当前可能无法访问该目录”

要检查外部存储目录的状态,请使用以下功能:

Environment.getExternalStorageState();
Environment.isExternalStorageRemovable();
上述功能的文档可用

您还可以通过以下功能检查外部存储器是否可移动(因此是SD卡):

Environment.getExternalStorageState();
Environment.isExternalStorageRemovable();
如果外部存储器是SD卡,它将返回
true

编辑: 要查找设备的SD卡路径,可以通过以下命令使用adb外壳:

adb shell 'echo ${SECONDARY_STORAGE%%:*}'
()

可能会暗示出一个实际的答案,许多人对此感到矛盾。

试试看

File dirs [] = getExternalFileDirs(); 

如果有更多,最后一个将在可移动卡上。只能在外部文件目录中写入。但要看整张卡片。只需从路径中获取…/Android/…

之前的部分,即可使用以下代码获取外部存储卡路径

String path4 = System.getenv("SECONDARY_STORAGE");

您得到了路径::/storage/ExtSdCard(您的外部SDCard名称)

我用答案解决了这个问题。@WonderCsabo是的,对不起,这就是我删除我的评论的原因。真的吗?文件资源管理器是否执行此例程?这似乎很糟糕。@FlashThunder您也可以使用相同的名称,您可以通过提供名称来访问它。它不在/mnt/dir中。。。检查过了。。。正确的目录是/storage/sdcard1,但我怎么知道呢???只需给/mnt/你的SD卡名,给上面相同的名字是必要的,但我需要它在每个设备上工作,而不仅仅是我的!我想你应该试试我其他评论中的链接。它通常可以找到设备中安装的所有外部存储器。但是。。。。即使连接到USB,文件浏览器也能检测到它,所以它怎么知道?这并不能回答问题。问题是@FlashThunder试图访问的外部存储是一个未关联的内部存储,但它是从
getExternalStorageDirectory()
返回的。真正的外部存储无法通过这种方式访问。没错,@WonderCsabo。似乎应由制造商指定在请求外部存储时返回的内容。