我不知道怎么说这个,但是在iOS术语中,如果我下载图像并将其保存在文档目录中,它会将其保存在Apps Container中,而其他应用程序和相机都看不到它滚动等。
我目前在Android中拥有它的方式,所有这些图像都可以在文件资源管理器和图库中看到。
我想知道如何以类似于iOS的方式保存这些图像并将它们隐藏在Apps自己的容器中。
有没有办法用context.MODE_PRIVATE或类似的东西创建文件夹?
这就是我现在所做的,它能解决这个问题吗?
public static Boolean saveToInternalStorage(Context context, Bitmap bitmap, String filename) {
ContextWrapper cw = new ContextWrapper(context);
//Path to /data/data/yourapp/app_data/imageDir
File directory = cw.getDir("imageDir", Context.MODE_PRIVATE);
//Create imageDir
File mypath = new File(directory, filename);
FileOutputStream fos = null;
try {
fos = new FileOutputStream(mypath);
//Use the compress method on the BitMap object to write image to the OutputStream
if (bitmap.compress(Bitmap.CompressFormat.PNG, 100, fos)) {
return true;
}
} catch (Exception e) {
e.printStackTrace();
} finally {
try {
if (fos != null) {
fos.close();
}
} catch (IOException e) {
e.printStackTrace();
}
}
return false;
}
public static Bitmap loadImageFromStorage(Context context, String filename) {
ContextWrapper cw = new ContextWrapper(context);
//Path to /data/data/yourapp/app_data/imageDir
File directory = cw.getDir("imageDir", Context.MODE_PRIVATE);
try {
File f = new File(directory, filename);
Bitmap b = BitmapFactory.decodeStream(new FileInputStream(f));
return b;
} catch (FileNotFoundException e) {
e.printStackTrace();
}
return null;
}
答案 0 :(得分:4)
阅读此article。这会有所帮助..
您可以将文件直接保存在设备的内部存储空间中。默认情况下,保存到内部存储的文件对应用程序是私有的,而其他应用程序无法访问它们(用户也无法访问)。当用户卸载您的应用程序时,将删除这些文件。
答案 1 :(得分:3)
我想知道如何以类似于iOS的方式保存这些图像并将它们隐藏在Apps自己的容器中。
将其写入getFilesDir()
,getCacheDir()
或internal storage上的其他位置。
这就是我现在所做的,它能解决这个问题吗?
ContextWrapper
没用。如果您正在下载图像,我不知道为什么您要写入存储的Bitmap
- 直接下载到存储。
但是,关于将图片保密为您的应用,getDir()
也指向内部存储空间中的位置。