如何从Android图库中隐藏图像

问题描述 投票:0回答:5

我当前项目的一部分是从 URL 下载图像然后保存到 SDCard。但问题是SD卡中保存的所有图像都显示在Android图库页面中。我想要的是“我不想将所有保存的图像都保存在Android图库中。

android android-sdcard android-gallery
5个回答
36
投票
  1. 添加“.nomedia”文件。不工作?尝试第二个选项。

  2. 将文件保存到以“.”开头的文件夹,例如

    /sdcard/.myimages/


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”; 当你想再次显示它时,再次重命名它


0
投票

我使用了三种方法:

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

文件路径看起来像:

/storage/emulated/0/Download/.TafheemReels/mypicture.falseExtension
  1. 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根本不看文件扩展名。

您的图像文件将永远隐藏在图库应用程序中。

© www.soinside.com 2019 - 2024. All rights reserved.