bug

android 中资源图片被系统相册扫描显示问题

Posted by Jfson on 2017-09-25

问题 android .nomedia

打开相册,发现应用下载的图片被显示在其中,往往这时候我们不希望把其暴露给用户。

比如:视频、图片、音频都不需要暴露给用户。

解决方案

  • 1.修改资源文件名

    • 比如图片为img/png的格式修改为ing 等等,系统不认的格式
  • 2.添加忽略文件”.nomedia”,在需要呗忽略的文件夹下创建一个名为”.nomedia”的空文件即可,系统应用即不扫描其文件。

  • code

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
private synchronized void addIgnore(String filePath) {
File file = new File(filePath);
if (!file.exists()) {
file.mkdirs();
}
File ignoreFile = new File(filePath + "/.nomedia");
if (ignoreFile.exists() && ignoreFile.isFile()) {
return;
}
try {
ignoreFile.createNewFile();
} catch (IOException e) {
e.printStackTrace();
}
}

参考文档

google 文档是这么介绍

说明

问题

  • 运行发现还是在显示,百思不得解。查看stackoverflow中 Android - .nomedia not working for images 也没有清晰的答案。

  • 但是答案中的一句话给了灵感,(
    1
    down vote
    The .nomedia file is preventive, not curative)此忽略文件是预防性质的,而不是治疗性质的。这是什么意思呢?

    • 之前已经扫描出来的资源图片/视频等等,添加nomedia文件后还是会显示
    • 添加nomedia文件后,在向该文件夹中添加资源图片/视频,这些将不会显示在系统相册中。

pv UV: