我当前项目的一个部分是从URL下载图片然后保存到SD卡。但问题是所有保存在SD卡中的图像都将显示在安卓画廊页面上。我的意愿是"我不希望所有保存的图片出现在安卓画廊中。"
我当前项目的一个部分是从URL下载图片然后保存到SD卡。但问题是所有保存在SD卡中的图像都将显示在安卓画廊页面上。我的意愿是"我不希望所有保存的图片出现在安卓画廊中。"
添加“.nomedia”文件。不起作用?尝试第二种选项。
将您的文件保存到以“.”开头的文件夹中,例如/sdcard/.myimages/
您可以使用以下代码创建.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();
}
}
图库应用程序会忽略该“Android”文件夹。很简单 :-)
我使用了三种方法:
.TafheemReels
.falseExtension
文件路径看起来像:
/storage/emulated/0/Download/.TafheemReels/mypicture.falseExtension
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);