如何在安卓相册中隐藏图片

17

我当前项目的一个部分是从URL下载图片然后保存到SD卡。但问题是所有保存在SD卡中的图像都将显示在安卓画廊页面上。我的意愿是"我不希望所有保存的图片出现在安卓画廊中。"


1
请参考此链接 stackoverflow链接 - harikrishnan
5个回答

36
  1. 添加“.nomedia”文件。不起作用?尝试第二种选项。

  2. 将您的文件保存到以“.”开头的文件夹中,例如/sdcard/.myimages/


在 /sdcard/myapps/ 文件夹中添加 ".nomedia"?我该如何获取 ".nomedia" 文件? - PPShein
只需创建一个空文件 :) - ozbek
1
这个不行啊,伙计。不是第一种选项,也不是第二种选项,甚至连以“.”为前缀创建文件都不行。 - Odaym
1
@Odaym:“这不起作用”是一个非常模糊的说法。它到底是怎么不工作的?你采取了什么步骤?你确认你没有看到旧的缓存图像吗? - ozbek
“Doesn't work” 意味着在创建带有“.”前缀的目录、在该目录内创建“.nomedia”文件以及使用“.”前缀创建图像后,媒体重新扫描后仍然显示图像。同时参考了这个链接:https://code.google.com/p/android/issues/detail?id=24162 - Odaym

10

您可以使用以下代码创建.nomedia文件:
String NOMEDIA=".nomedia";

File Folder = new File(Environment.getExternalStorageDirectory() + "/mydir");
   if(Folder.mkdir()) { 
      nomediaFile = new File(Environment.getExternalStorageDirectory() + "/mydir/"+ NOMEDIA);
      if(!nomediaFile.exists()){
          nomediaFile.createNewFile();
      }
   }

1
我找到了一个简单的方法(我认为是这样的)。在“Android”文件夹中创建一个文件夹(其中包含数据和obb文件夹),并将您的媒体(图片、视频等)放入您创建的文件夹中。

图库应用程序会忽略该“Android”文件夹。很简单 :-)


1
这是一个关于编程的问题。我认为在特定文件夹中放置.nomedia文件可以隐藏该文件夹中的所有图片。您可以通过程序更改图像文件的扩展名,这样相册就无法将其识别为图像。例如,如果您的图像文件名为"pic1.jpg",请将其重命名为"pic1.aaa"。当您想再次显示它时,请再次将其重命名。请注意,保留HTML标记。

它是完美的解决方案! - nicolas asinovich

0

我使用了三种方法:

  1. 文件夹名字带点:.TafheemReels
  2. 图像扩展名:.falseExtension

文件路径看起来像:

/storage/emulated/0/Download/.TafheemReels/mypicture.falseExtension

展示带有picasso.的图片。 存储方法:
 public static void saveImageToDownloadStorage(Context mContext, Bitmap bitmap, String fileName) {


        class saveThread extends  Thread {

            @Override
            public void run() {
                super.run();


                FileOutputStream outStream = null;

                File outFile;
                try {
                    outFile = reelImagePath ( fileName);
                    outStream = new FileOutputStream(outFile);
                    bitmap.compress(Bitmap.CompressFormat.JPEG, 100, outStream);
                    outStream.flush();
                    outStream.close();

                    MediaScannerConnection.scanFile(mContext, new String[]{outFile.getPath()}, new String[]{"image/jpeg"}, null);

                } catch (Exception e) {
                    e.printStackTrace();
                }


            }
        }

        saveThread thread = new saveThread();
        thread.setDaemon(true);
        thread.start();


    }


public static File reelImagePath (String fileName){
        String root = Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DOWNLOADS).toString() + "/.TafheemReels";
        File dir = new File(root);
        if (!dir.exists()) {
            dir.mkdirs();
        }

        String filename = String.format("%s.falseExtension", fileName);
        File  outFile = new File(dir, filename);

        return outFile ;

    }

并且显示带有毕加索的图像:

File localPath = reelImagePath("mypicture");
 Uri uri = Uri.fromFile(localPath);
    
            Picasso.with(mContext).cancelRequest(imageView);
    
            Picasso.with(mContext).load(uri).into(imageView);
    
       
    

通过这种方式,我发现 Picasso 不会关注文件扩展名。
而且你的图像文件将永远隐藏在图库应用中。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接