在我的应用程序中,我在drawable文件夹中有几个图像。这使得apk变得更大。现在我已经将它们上传到我的Google驱动器中,当用户连接到互联网时,它将从驱动器下载该图像。在哪里保存下载的图像?在外部存储,数据库或其他地方?我希望用户无法删除该图像。
答案 0 :(得分:2)
我希望用户无法删除该图片
你真的不能这样做。除非用户选择图片,否则图片不在此处,为什么您不想让用户删除它们?在这种情况下,您将再次下载或要求用户选择。正常的“缓存”方案。更不用说你实际上无法保护这些图像,因为用户可以随时清除应用程序数据(包括数据库和内部存储)。
答案 1 :(得分:2)
您可以将它们存储在内置手机存储器中。
保存图像
private String saveToInternalSorage(Bitmap bitmapImage){
ContextWrapper cw = new ContextWrapper(getApplicationContext());
// path to /data/data/yourapp/app_data/imageDir
File directory = cw.getDir("youDirName", Context.MODE_PRIVATE);
// Create imageDir
File mypath=new File(directory,"img.jpg");
FileOutputStream fos = null;
try {
fos = new FileOutputStream(mypath);
// Use the compress method on the BitMap object to write image to the OutputStream
bitmapImage.compress(Bitmap.CompressFormat.PNG, 100, fos);
fos.close();
} catch (Exception e) {
e.printStackTrace();
}
return directory.getAbsolutePath();
}
访问存储的文件
private void loadImageFromStorage(String path)
{
try {
File f = new File(path, "img.jpg");
Bitmap b = BitmapFactory.decodeStream(new FileInputStream(f));
// here is the retrieved image in b
}
catch (FileNotFoundException e)
{
e.printStackTrace();
}
}
编辑
您可以直接在设备的内部存储上保存文件。默认情况下,保存到内部存储的文件对应用程序是私有的,而其他应用程序无法访问它们(用户也无法访问)。当用户卸载您的应用程序时,将删除这些文件。
了解更多信息Internal Storage