所以,我正在创建一个可以保存图片的应用程序。但是我想将所有图片捆绑到主要设备存储中的易于访问的文件夹中。 。目录
我想要保存到外部卡,但我正在测试的设备没有,其他设备也可能没有它们(最终,我将允许该应用用户决定他们是否需要内部或外部存储器。)
现在,我试图找到这样的文件夹:
String directory = "/mnt/CPB";
File mainFolder = new File(directory);
if(mainFolder.exists() && mainFolder.isDirectory()){
Toast.makeText(getApplicationContext(), "CPB Is Made", Toast.LENGTH_SHORT).show();
} else {
Toast.makeText(getApplicationContext(), "CPB does not exist", Toast.LENGTH_SHORT).show();
mainFolder.mkdir();
}
这显然不起作用。那么我从哪里开始呢?
我希望在查看文件夹或连接到计算机以查看目录时显示在主目录视图上的文件夹。另外,我在Android清单中需要任何类型的权限吗?
答案 0 :(得分:2)
但是我想将所有图片捆绑到主要设备存储中的易于访问的文件夹中。 。目录
我将从上下文假设您指的是Android SDK调用external storage的内容。
请注意,虽然您可能认为用另一个顶级目录混淆用户的外部存储空间是个好主意,但如果用户不同意您的评估,请不要感到震惊。
最终,我允许应用用户决定他们是否需要内部或外部内存
我的猜测是,您分别指的是external storage和removable storage。
我试图找到这样的文件夹:
您没有/mnt
的读/写权限,用户也无权访问。
您的目标是Environment.getExternalStorageDirectory()
。但是,您应该强烈考虑Environment.getExternalStoragePublicDirectory()
(针对常见位置,例如照片和内容)或getExternalFilesDir()
Context
(针对外部存储设备上的应用特定位置)。
Android清单中是否需要任何类型的权限?
外置存储上的所有位置在Android 4.3及更早版本上都需要WRITE_EXTERNAL_STORAGE
。此外,Environment
提供的外部存储位置也需要Android 4.4及WRITE_EXTERNAL_STORAGE
。
但是,如果您使用getExternalFilesDir()
,则Android 4.4+上不需要WRITE_EXTERNAL_STORAGE
。这是考虑使用该位置的另一个原因。
另请注意,WRITE_EXTERNAL_STORAGE
是Android 6.0+中的dangerous
权限,这意味着如果您的targetSdkVersion
为23+,则必须在运行时提出要求。此外,无论targetSdkVersion
如何,用户都可以决定不授予您该权限。因此,避免WRITE_EXTERNAL_STORAGE
通常是一个好主意。
答案 1 :(得分:1)
主设备存储不是/mnt
,通常是/storage/sdcard0
(至少在我的关联4上)