Android 如何在外部sd卡而不是设备存储器中写入文件?
我试过这个:Android 如何在外部sd卡而不是设备存储器中写入文件?,android,file-handling,android-file,Android,File Handling,Android File,我试过这个: public String getFilename() { File file = new File(Environment.getExternalStorageDirectory(), "Test2"); if (!file.exists()) { file.mkdirs(); } String uriSting = (file.getAbsolutePath() + "/" + "IMG_" + System.currentT
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卡上创建的。您无权任意访问 在Android 4.4+上,您有两个主要选项:
getExternalFilesDirs()
、getExternalCacheDirs()
或getExternalMediaDirs()
(注意复数形式),所有方法都在上下文中使用。如果它们返回2+个位置,则第二个和后续位置是可移动存储上的位置,您的应用程序可以读取和写入这些位置,而无需任何权限
Uri
,而不是文件系统路径您是否提供了此权限?@ShlomiHaver是的,否则我将无法在设备存储中写入。我记得在某个地方读到,即使设备存储是外部存储,它也是操作系统的外部存储。我不能允许用户这样做,我需要创建一个特定的目录并获取它的URL。这难道不可能吗?@AseedUsmani:你不能创建一个特定的目录,除非该目录恰好位于上面选项#1中列出的根目录下。相机应用程序如何将我们在sd卡上的点击保存在DCIM/Camera目录下?我可以用同样的方法吗?@AseedUsmani:你的问题中已经有了处理外部存储的代码。设备的内置摄像头应用程序可能具有使用可移动存储的附加权限,这超出了普通应用程序的功能,但除非您正在构建自己的设备或自定义ROM,否则这对您没有帮助。API 24设备上也有允许您请求SD卡读/写访问的权限。