我有一个应用程序拍照并将其保存在SD卡中的文件夹中,在我将其上传到服务器后,我的要求是我从应用程序中获取的照片不应该显示在设备库和文件管理器中(除了一些高清应用程序)但隐藏文件夹/图像后,它必须显示在我的应用程序中。
我使用了一些解决方案,例如添加"。"在任何文件夹名称之前,但使用它将从我的应用程序中消失我的图片,所以它没用,
我还使用了.nomedia文件概念,但它无法正常工作,图像显示在文件管理器中。
任何帮助将不胜感激......
答案 0 :(得分:0)
实际上,文件夹中的.nomedia文件不会显示Gallery应用中该文件夹中的图片。但是你永远不能阻止文件浏览器显示它们。 add "." before folder name it will dispear pic my application too so it useleass
。这是非常无意义的,因为你在应用程序代码中做错了。但即便如此,所有文件管理员都会显示它(因为所有文件管理器都会显示隐藏的文件)。
最好的办法是将文件放在内存中的文件夹中。然后文件管理员无法看到它们。 (至少在手机未植根时)。
thanking you in advanced to use your time...
。我讨厌这样的话。
答案 1 :(得分:0)
@greenapps仅添加“。”在文件夹名称中,它完全隐藏了图像(从图库默认应用程序以及我的应用程序)。
但是感谢你花了你的心思我发现我的解决方案只隐藏图库应用程序中的图像
这里我在我的app文件夹中保存图片后立即调用此函数, 此功能从默认的 DCIM 文件夹中删除最新的图片但是您必须验证是否拍摄图片;-)
如果您发现任何错误,请通知我!
public void deleteImageFromGallery(String captureimageid) {
Cursor c = null;
Uri u = MediaStore.Images.Media.EXTERNAL_CONTENT_URI;
getContentResolver().delete(MediaStore.Images.Media.EXTERNAL_CONTENT_URI, BaseColumns._ID + "=?",
new String[]{captureimageid});
String[] projection = {MediaStore.Images.ImageColumns.SIZE, MediaStore.Images.ImageColumns.DISPLAY_NAME,
MediaStore.Images.ImageColumns.DATA, BaseColumns._ID,};
AppLog.i("InfoLog", "on activityresult Uri u " + u.toString());
try {
if (u != null) {
c = managedQuery(u, projection, null, null, null);
}
if ((c != null) && (c.moveToLast())) {
ContentResolver cr = getContentResolver();
int i = cr.delete(MediaStore.Images.Media.EXTERNAL_CONTENT_URI, BaseColumns._ID + "=" + c.getString(3),
null);
AppLog.i("TAG", "Number of column deleted : " + i);
}
} finally {
if (c != null) {
c.close();
}
}
sendBroadcast(new Intent(Intent.ACTION_MEDIA_SCANNER_SCAN_FILE, Uri.parse("file://"
+ Environment.getExternalStorageDirectory())));
}