【问题标题】:Android create a new folder on internal "Device Storage"Android 在内部“设备存储”上创建一个新文件夹
【发布时间】:2016-01-14 07:46:57
【问题描述】:

所以,我正在创建一个将保存图片的应用程序。但我想将所有图片捆绑到主“设备存储”目录上的一个易于获取的文件夹中。

我想保存到外部卡,但我正在测试的设备没有,其他设备也可能没有(最终,我将允许应用用户决定他们是否需要内部或外部存储器)。

现在,我正试图找到这样的文件夹:

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 清单中获得任何类型的权限吗?

【问题讨论】:

    标签: android


    【解决方案1】:

    但我想将所有图片捆绑到主“设备存储”目录上的一个易于获取的文件夹中。

    根据上下文,我假设您指的是 Android SDK 所称的 external storage

    请注意,虽然您可能认为将用户的外部存储与另一个顶级目录混在一起是个好主意,但如果用户不同意您的评估,请不要感到震惊。

    最终,我将允许应用用户决定他们需要内部存储器还是外部存储器

    我猜你指的是external storageremovable 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 通常是个好主意。

    【讨论】:

    • 哇,这是我很长时间以来收到的最好的信息。你真的解释了我需要和正在寻找的东西!另外,你提出了一个很好的观点。我错误地认为大多数人会在文件夹视图类型设置中寻找图像
    【解决方案2】:

    主设备存储不是/mnt,通常是/storage/sdcard0(至少在我的nexus 4上)

    更好的是,使用getExternalStorageDirectory()

    【讨论】:

    • 所以,我一直在阅读的是 [getExternalStorageDirectory()][1] 会在外部存储器中创建一个文件夹,但是如果没有外部存储器,它会在内部存储器中创建它吗? [1]:developer.android.com/reference/android/os/…
    • 来自同一页:注意:不要被这里的“外部”一词所迷惑。最好将此目录视为媒体/共享存储。它是一个文件系统,可以保存相对大量的数据,并且在所有应用程序之间共享(不强制执行权限)。传统上这是一张 SD 卡,但它也可以作为设备中的内置存储实现,不同于受保护的内部存储,并且可以作为文件系统安装在计算机上。
    猜你喜欢
    • 1970-01-01
    • 2012-01-13
    • 2011-10-31
    • 1970-01-01
    • 2015-02-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多