【问题标题】:Why the folder is not created in the internal storage of some android devices?为什么某些android设备的内部存储中没有创建文件夹?
【发布时间】:2019-02-07 05:18:43
【问题描述】:

我在内部存储器中创建了一个文件夹来存储文件。但问题是在某些 Android 设备中未创建该文件夹。该文件夹是在棒棒糖设备中创建的,但不是在 oreo 和牛轧糖中创建的。

  • 有什么问题?
  • 更高级别的 API 是否需要任何额外的权限?

在内部存储中创建文件夹的代码

File f1 = new File(Environment.getExternalStorageDirectory(), Constants.STORED_FOLDER);
if (!f1.exists()) {
  f1.mkdirs();
}
Log.e("check_path", "" + f1.getAbsolutePath());

另外,我还有一个关于如何使文件夹在图库中可见的问题。

它在图库中不可见?如何解决这个问题?

【问题讨论】:

标签: android android-studio directory


【解决方案1】:

该文件夹是在棒棒糖设备中创建的,但不是在 oreo 和牛轧糖中创建的。问题是什么?

从 Android 6.0 开始(如果我没记错的话),许多权限需要动态分配(在运行时)。你需要get your permission at runtime

更高级别的 API 是否需要任何额外的权限?

基本权限是WRITE_EXTERNAL_STORAGE,但你不仅需要在AndroidManifest.xml中声明,还需要在运行时声明。

我还有另一个疑问,如何使文件夹在画廊中可见。它在画廊中不可见?如何解决这些问题?

如果您指的是照片库,您可能需要等待媒体进程扫描整个 sdcard 以将您的文件夹(其中必须包含一些照片)添加到图库中。

【讨论】:

  • 我的回答产生的一个问题:应用程序是否可以强制将其文件夹添加到图库中?
  • 我在内部存储中创建的文件夹在图库中不可见。所以每次我想访问文件资源管理器来检查文件夹。它是如何在图库中显示的?
  • @Neetha 请参阅下面 Dhiraj 的答案。
  • 谢谢。我已经按照您的建议完成了文件夹创建。我还通过在 android 中使用 MediaScannerConnection 使其在画廊中可见
【解决方案2】:

要立即显示您的文件夹,您需要发送广播

sendBroadcast(new Intent(Intent.ACTION_MEDIA_MOUNTED,
        Uri.parse("file://"
                + Environment.getExternalStorageDirectory())));

此代码将告诉图库应用已添加某些内容,因此请立即重新扫描媒体

【讨论】:

  • 这个答案被添加到 Geno Chen 答案中
  • 你能告诉我我想把这段代码放在哪里吗?还有什么是“file://”?这是我们的文件夹名称吗?
  • @Neetha 我认为,将照片放在该文件夹中之后的位置。 “file://”是文件的默认模式,由 URI 格式指定。您可以手动将Uri.parse() 中的参数重写到您的照片目录。
【解决方案3】:

您必须在创建文件夹之前添加请求权限。 请参阅下面的链接: https://developer.android.com/training/permissions/requesting

Android marshmallow request permission?

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2023-04-02
    • 2012-01-13
    • 1970-01-01
    • 2015-02-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多