Android – .nomedia不适用于图像

我有图像,这是从特定的应用程序从SD卡读取,所以我想隐藏它的图片库。 我已经把.nomedia文件放进去了,但是这个文件被忽略了,图片仍然在图库中显示。 我把它放在“。” 在一开始的时候。 还是行不通。 有任何想法吗?

Solutions Collecting From Web of "Android – .nomedia不适用于图像"

我猜你正在使用Android 4.0,因为.nomedia正常运作,直到那时。 针对该问题的AOSP 错误报告解释:

Android 4.0上的MediaScanner无法在遇到.nomedia文件时忘记已经编入索引的文件,但是如果它出现在第一次传递中,它将会遵守它。 所以解决方法是简单地重命名目录。 当然,如果你喜欢,你可以在下一次扫描后更改名称。

更新 :我想完整的解决scheme将是重新命名目录后实际强制媒体扫描。 我没有尝试过,但像这样的事情应该做的伎俩:

 sendBroadcast(new Intent(Intent.ACTION_MEDIA_MOUNTED, Uri.parse("file://" + Environment.getExternalStorageDirectory()))); 

那么…我承认我只是在猜测,但是因为它在评论中得到了+1,所以我会给它一个答案。 由于这是您自己的应用程序,因此将图像文件的扩展名更改为完全独一无二的“.myimagefile”,并查看是否将其隐藏在Android中。 同时你知道什么文件加载到自己的应用程序,以及如何保存它们。

.nomedia错误是正确的,你可以将它添加到预先存在的图像文件夹。

您可以通过重命名文件夹,运行库(“隐藏的文件夹现在应该丢失”),并重命名文件夹回到您想要的,它可以强制重新索引创build.nomedia文件。它应该保持隐藏状态。

我只是做了一遍,以确保它在我的手机上。 Android 4.0.4。

这是我发现自己的东西:

http://www.transformerforums.com/forum/asus-transformer-faq/17765-solved-nomedia-doesnt-work-under-honeycomb-ics.html

但是,对该方法稍作修改:

  1. 下载并安装SDRescan应用程序
  2. 清除图库应用程序的数据
  3. 清除媒体存储应用程序的数据
  4. 打开从步骤1下载的SDRescan应用程序

应重新扫描SDCard,此时应忽略包含.nomedia文件的所有目录。

.nomedia文件是预防性的,而不是治疗性的(在Android 4.0中),这是一个错误。 如果您有一个.nomedia文件,并且图像已经在其中,Gallery将仍然search图像。

您需要在将图像放入之前创build.nomedia文件。

编辑 :所有以点开头的文件夹都不会被扫描(因为隐藏)。

在我的Samsung Galaxy Note 2上使用Media Storage 4.1.1时,上述所有技巧都没有起作用,从这个意义上说:包含.nomedia文件的目录仍然被扫描,这可能会耗尽电池(尽pipe结果在画廊),以及名称以“。”开头的目录。 仍然被扫描:-(
我采取了“媒体扫描仪根”应用程序,它允许完全禁用蹩脚的媒体扫描仪。 这显然是通过类似的东西来实现的

  pm disable com.android.providers.media/com.android.providers.media.MediaScannerReceiver 

顺便说一句,禁用/冻结媒体存储应用程序本身有一个坏的结果,铃声和通知的select和绑定不再工作(多么美妙的devise),但是当只禁用其扫描仪组件,仍然可以使用,例如,用于select铃声的ES文件资源pipe理器。

在我的记忆卡中,我有数以千计的照片压倒了媒体扫描仪。 然后在我的存储卡的根文件夹中,从“RootFolder”更名为“.RootFolder”

成为隐藏的目录,并没有使用更多的.nomedia

尝试这个。

您可以考虑使用APK Expansion Zip Library(需要API等级5或更高)读取您将作为Zip存档的一部分安装到SD卡的文件。 这个库的描述可以在这里find:

http://developer.android.com/guide/market/expansion-files.html#ZipLib

据推测,存储在您的SD卡ZIP压缩文件中的文件将不会显示在画廊。

另外, 如果您的应用程序读取 (但不写入 )SD卡的图像,并且只能在您自己的应用程序中使用,并且可以在应用程序安装或更新时发送,则可能会有意义的是利用新的Google Play工具将它们作为应用程序的一部分安装。

我猜你正在将图像存储到SD卡,因为它们太大而无法放入APK文件(由于缓冲问题,由于它的大小限制为50MB,甚至比某些设备的实际尺寸还小)。

如果是这样的话,那么您可能会认为截至2012年3月5日的Google Play支持最多两个“扩展文件”(最多2 GB)的附件(至您的应用程序)。 该APK仍然有50MB的最大值,但扩展文件将总存储量提高到4GB以上。 这些扩展文件由Google为您提供,它们保存在特定于您的应用程序的特定SD卡文件夹中,可以使用Downloader Library提供的API访问(需要API等级5或更高)。

Google宣布了这一变化:

http://android-developers.blogspot.in/2012/03/android-apps-break-50mb-barrier.html

这里是设施的详细描述:

http://developer.android.com/guide/market/expansion-files.html

请注意,虽然这个工具是新的,但是这些库已经提供了Android SDK以与更早的API级别一起使用。 例如,在我的安装中,我在这里find了API-8版本:

 <Android SDK base folder>\extras\google\play_apk_expansion\ 

同一文件夹的zip_file子文件夹中包含上述APK扩展Zip库。

我自己还没有亲自使用过这个设备,所以我只根据引用的参考文献来描述它。

图库没有经常更新,一些缩略图仍然在视图中。 为此,您需要重新启动手机或以编程方式更新图库,请遵循以下代码。

  /** * This method is must to reflect changes on gallery, if some file is * deleted or moved, <b> no updation is shown on gallery till phone is * rebooted </b> or <i>till this method UpdateGallery(Activity activity) is * called</i> UpdateGallery */ public static void UpdateGallery(Activity activity) { activity.sendBroadcast(new Intent(Intent.ACTION_MEDIA_MOUNTED, Uri .parse("file://" + Environment.getExternalStorageDirectory()))); }