【问题标题】:How to create application specific folder in android gallery?如何在 android 库中创建应用程序特定文件夹?
【发布时间】:2013-12-29 16:37:44
【问题描述】:

我正在构建 android 应用程序“XYZ”,用户将在其中存储图像和视频等媒体。因此,我想在 android 库中创建一个名为“XYZ”的文件夹,并将特定于应用程序的所有媒体存储在“XYZ”中。如何实现?

目前,我可以将媒体存储在 sdcard 上,并且在扫描媒体文件时,它们会显示在 android 库中的“images”文件夹中。

【问题讨论】:

    标签: android android-gallery


    【解决方案1】:

    我想存储画廊可访问的图像的正确方法是将文件写入此目录。

    static final String appDirectoryName = "XYZ";
    static final File imageRoot = new File(Environment.getExternalStoragePublicDirectory(
            Environment.DIRECTORY_PICTURES), appDirectoryName);
    

    对于视频

    static final File videoRoot = new File(Environment.getExternalStoragePublicDirectory(
            Environment.DIRECTORY_MOVIES), appDirectoryName);
    

    并创建图像

    imageRoot.mkdirs();
    final File image = new File(imageRoot, "image1.jpg");
    // open OutputStream and write the file
    

    如果您添加一些文件并打开图库,您应该会看到专辑“XYZ”。 请注意,如果目录为空,您将看不到相册。

    关于你的话

    目前,我可以将媒体存储在 sdcard 上并扫描 媒体文件,它们显示在“图像”文件夹中,在 android 库中。

    表示方式取决于您使用的图库应用。 默认的 Android 库应创建以媒体文件所在文件夹命名的“相册”。

    编辑:如果您不运行媒体扫描仪或将其添加到 MediaStore 数据库,您将看不到新创建的图像。

    【讨论】:

    • 可以,但是下载很慢,你应该使用这样的绝对路径: static final String appDirectoryName = "XYZ"; static final File imageRoot = new File(Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_PICTURES).getAbsolutePath(), appDirectoryName);
    • 别忘了。为此,您需要
    【解决方案2】:

    有超过 10 亿台 Android 设备,代表数千种设备型号,以及数百种不同的“图库”应用(预装或用户安装)。任何“图库”应用都不需要文件夹的概念,更不用说第三方开发者控制这些文件夹了。

    因此,除了编写自己的此类应用程序之外,没有通用的方法可以实现您的目标。

    【讨论】:

    • 在我的手机上,我所有的 WhatsApp 图片和 Skitch 图片都存储在各自的文件夹中。我想为我的应用做同样的事情。
    • @Mark:你是对的。但我认为 /sdcard/DCIM/ 是一个非常标准的“画廊”路径(用于图片)。
    • @Klaus66:这与我的回答无关。仅仅因为您将 files 放在特定文件夹中并不意味着任何给定的图库应用都必须显示该文件夹结构。
    【解决方案3】:

    如果您能够将视频和图像存储在 SD 卡等外部存储设备中,我假设您知道如何使用“文件”

    因此您只需命名要保存的位置并创建它(如果它不存在)

    类似:

    File file = new File(Environment.getExternalStorageDirectory() +"/XYZ/");  
    
    if(!file.exists())     //check if file already exists
    {
        file.mkdirs();     //if not, create it
    }
    

    这是您的目录文件夹,您可以在其中保存任何您想要的内容。

    类似:

    File imageFile = new File(file.toString() + "image" + ".jpg");
    

    这将在 XYZ 目录中创建一个名为“image.jpg”的图像文件。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-12-28
      • 2015-06-03
      • 1970-01-01
      • 2016-08-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多