我有 10 张图像,想将所有这些图像保存在 android 应用程序内存中。因此,无论何时使用安装此应用程序,他都已经拥有了所有图像。
我已经硬编码了很多次,但没有得到很好的回应。
有什么办法吗。所以我会做到的。
请帮我
我有 10 张图像,想将所有这些图像保存在 android 应用程序内存中。因此,无论何时使用安装此应用程序,他都已经拥有了所有图像。
我已经硬编码了很多次,但没有得到很好的回应。
有什么办法吗。所以我会做到的。
请帮我
将所有图像存储在 APK 的 assets 文件夹中。安装后,扫描内部存储器以查看是否存在所需的图像。如果没有,请将它们复制到那里。这样,即使用户清除了您应用程序的数据,您也可以将它们复制回来。另一个好处是用户也不会对此一无所知,因此它是一个很好的用户体验。唯一的问题是您的 APK 大小会增加,因此请进行相应的管理。
试试下面的代码
InputStream inputStream = getAssets().open("yourfile.jpg");
OutputStream out = new FileOutputStream(new File("/sdcard/yourfile.jpg"));
int read = 0;
byte[] bytes = new byte[1024];
while ((read = inputStream.read(bytes)) != -1) {
out.write(bytes, 0, read);
}
inputStream.close();
out.flush();
out.close();
您可以将文件保存在您的资产或 res 文件夹中,这里我将文件保存在 res/drawable/ 中,并在需要时将它们复制到 sdcard 上。在下面的代码中,我们首先检查文件是否不存在,然后从可绘制对象创建位图并将文件写入 sdcard。
File file = new File(pathExt+"/Pictures/", "s1.png");
if(isSDCARDMounted()){
if (!file.exists()) {
bmp = BitmapFactory.decodeResource(getResources(),
R.drawable.s1);
try {
FileOutputStream outStream = new FileOutputStream(file);
bmp.compress(Bitmap.CompressFormat.JPEG, 100, outStream);
outStream.flush();
outStream.close();
} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
isSDCARDMounted : 检查卡是否挂载的函数
pathExt :外部存储目录路径的变量
确保设置了在外部存储上写入的权限
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />