我有图像,只能通过特定应用程序从SD卡读取,所以我想将其隐藏在图库中。我已将.nomedia文件放入其中,但此文件被忽略,图像仍在Gallery中显示。我把它用“。”在一开始的时候。还是行不通。有什么想法吗?
答案 0 :(得分:17)
我猜你正在使用Android 4.0,因为.nomedia
在此之前正常运行。 AOSP bug report for the issue解释说:
MediaScanner
在遇到.nomedia
文件时无法忘记已经编入索引的文件,但如果第一次传递时它存在,则它确实存在。因此,解决方法是简单地重命名目录。当然,如果您愿意,可以在下次扫描后更改名称。
更新:我认为完整的解决方案是在重命名目录后实际强制进行媒体扫描。我没有尝试过,但是这样的事情可以解决问题:
sendBroadcast(new Intent(Intent.ACTION_MEDIA_MOUNTED, Uri.parse("file://" +
Environment.getExternalStorageDirectory())));
答案 1 :(得分:6)
嗯......我承认我只是在猜测,但是因为它在评论中得到+1,我会给它一个旋转作为答案。由于这是您自己的应用程序,例如将图像文件的扩展名更改为完全唯一的“.myimagefile”,并查看是否将其隐藏在Android中。同时你知道要加载到你自己的应用程序中的文件,以及如何保存它们。
答案 2 :(得分:5)
.nomedia错误是正确的,您可以将其添加到预先存在的图像文件夹中。
您可以在创建.nomedia文件后通过重命名文件夹,运行库(“隐藏文件夹现在应该丢失”)并将文件夹重命名为您想要的内容来强制库重新编制索引。它应该保留隐藏。
我刚刚再次这样做以确保它可以在我的手机上运行。 Android 4.0.4。
答案 3 :(得分:4)
这是我发现自己的事情:
然而,对该方法略有改动:
应重新扫描SDCard,此时应忽略包含.nomedia文件的所有目录。
答案 4 :(得分:1)
.nomedia
文件是预防性的,而不是治疗性的(在Android 4.0中),这是一个错误。
如果您有一个.nomedia
文件且图片已在其中,则图库仍会搜索图片。
您需要先创建.nomedia
文件,然后再将放入其中。
编辑:不扫描所有以点开头的文件夹(因为隐藏)。
答案 5 :(得分:1)
在我的存储卡中,我有成千上万的照片压倒了媒体扫描仪。然后在我的存储卡上的根文件夹中,从“RootFolder”重命名为“.RootFolder”
成为隐藏目录而不使用更多.nomedia
试试这个。
答案 6 :(得分:1)
在我的三星Galaxy Note 2上使用Media Storage 4.1.1,从这个意义上讲,上面给出的所有技巧都没有完全发挥作用:仍然扫描包含.nomedia文件的目录,这会耗尽电池(尽管结果是在库中忽略,以及名称以'。'开头的目录。仍在扫描:-(
我使用了“Media Scanner Root”应用程序,该应用程序允许完全禁用蹩脚的媒体扫描程序。这显然是通过类似
pm disable com.android.providers.media/com.android.providers.media.MediaScannerReceiver
的方式实现的 BTW,禁用/冻结媒体存储应用程序本身会产生不良影响,即铃声和通知的选择和绑定不再起作用(这是一个很棒的设计),但是当只禁用其扫描仪组件时,仍然可以使用例如,用于选择音调的ES文件资源管理器。
答案 7 :(得分:1)
图库不会经常更新,并且某些缩略图仍在视图中。为此,您需要通过以下代码重新启动手机或以编程方式更新库。
/**
* 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())));
}
答案 8 :(得分:0)
您可以考虑使用APK扩展Zip库(需要API级别5或更高级别)来读取您将作为Zip存档的一部分安装到SD卡的文件。可以在此处找到该库的说明:
http://developer.android.com/guide/market/expansion-files.html#ZipLib
据推测,存储在SD卡上ZIP存档中的文件不会被图库显示。
此外,如果您的应用从读取到SD卡的图像,那应该仅适用于您自己的应用,并且可以在安装或更新您的应用时提供,然后利用新的Google Play工具将其合并为您应用的部分可能是有意义的安装时。
我猜你正在将你的图像存储到SD卡中,因为它们太大而无法放入你的APK文件中(鉴于它的50MB大小限制,由于缓冲,它甚至比某些设备的实际情况要小)问题)。
如果是这样,那么您可能会认为截至2012年3月5日的Google Play支持最多两个“扩展文件”(最多2个)的附件(到您的应用)。 APK仍然有50MB的最大值,但扩展文件将可用的总存储量提高到4 GB以上。这些扩展文件由Google为您提供,并且保存在特定于您的应用的特定SD卡文件夹中,并且可以使用下载程序库提供的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级别。例如,在我的安装中,我在这里找到了API-8版本:
<Android SDK base folder>\extras\google\play_apk_expansion\
该文件夹在其zip_file子文件夹中包含上述APK扩展Zip库。
我自己并没有亲自使用过此设施,所以我只根据引用的参考资料来描述这个设施。