我试过这个:
public String getFilename() {
File file = new File(Environment.getExternalStorageDirectory(), "Test2");
if (!file.exists()) {
file.mkdirs();
}
String uriSting = (file.getAbsolutePath() + "/" + "IMG_" + System.currentTimeMillis() + ".png");
return uriSting;
}
我尝试将第二行更改为:
File file = new File("sdcard/Test2");
但目录仍然是在设备存储中创建的,而不是在外部 SD 卡上。
最佳答案
您不能任意访问 removable storage .
在 Android 4.4+ 上,您有两个主要选择:
使用
getExternalFilesDirs()
、getExternalCacheDirs()
或getExternalMediaDirs()
(注意复数),所有方法都在上下文
。如果它们返回 2+ 个位置,则第二个和后续位置是您的应用可以在没有任何权限的情况下读取和写入的可移动存储上的位置。使用
ACTION_OPEN_DOCUMENT
andACTION_CREATE_DOCUMENT
, 以允许用户选择放置某些内容的位置,用户可以在其中选择可移动存储(或 Google Drive,或 DropBox,或 external storage,或其他任何东西)。你得到一个Uri
,而不是一个文件系统路径; useContentResolver
to work with thatUri
to get streams for reading and writing .
关于android - 如何在外部 SD 卡而不是设备存储中写入文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38247666/