Android 首次启动时将文件放入新创建的外部存储文件夹
我的Android应用程序在启动时在用户设备的外部存储上创建一个文件夹:Android 首次启动时将文件放入新创建的外部存储文件夹,android,android-external-storage,Android,Android External Storage,我的Android应用程序在启动时在用户设备的外部存储上创建一个文件夹: File images = new File(Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_PICTURES) + File.separator + "rapical" + File.separator); images.mkdirs(); 我有大约16个图像图标(.png),我想在用户第一次打开应用程序时将它们放在这个文件夹中 这
File images = new File(Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_PICTURES) + File.separator + "rapical" + File.separator);
images.mkdirs();
我有大约16个图像图标(.png),我想在用户第一次打开应用程序时将它们放在这个文件夹中
这样做的最佳实践是什么?我应该首先将它们放在drawable文件夹中,然后将它们复制到新创建的images文件夹中吗?不知道该采取什么方法 这里有两个不同的问题:
为用户添加的图像使用具有一些含义:
- 由于用户或其他应用程序可以随时删除该文件,因此您的应用程序可以在不再存在的图像中存活
- 您的用户不介意图像会被其他应用程序(如照片库)拾取
ACTION\u GET\u CONTENT
和/或ACTION\u OPEN\u DOCUMENT
获取图像),但您修改的副本将是应用程序的私有副本
我真诚地希望您使用,like,来加载这些图像,因为它们将为您处理背景线程和
ListView
/RecyclerView
图像回收和其他东西
在这种情况下,您在SQLite数据库中为默认食品存储的内容需要是图像加载库可以解释的内容,以便输入您想要的图像
在这种情况下,我建议使用assets/
发送图像和file:///android_asset/...
数据库中的值<代码>file:///android_asset/指向项目中的资产
,因此如果项目中有资产/chicken\u pad\u thai.jpg
,毕加索(以及任何像样的图像加载库)将能够解释file:///android_asset/chicken_pad_thai.jpg
)并加载图像
这样可以避免您复制图像,从而在首次启动时节省用户磁盘空间和时间。这也意味着,如果你替换了应用程序中的图像(例如,你得到了一张更好的代表泰国鸡肉垫的照片),用户将开始看到更新后的图像,而无需你做一些额外的工作来意识到你已经发布了一张新图像,并且必须将该图像复制到某个文件中
现在,假设您确实希望用户提供的映像位于外部存储器上。在这种情况下:
- 可能不是您选择的目录,而是使用
(在getExternalFilesDir()
上的一种方法),就像在API级别19+上一样,您不需要将Context
作为权限WRITE\u EXTERNAL\u STORAGE
- 如果您希望用户能够操作默认食品的图像,那么在第一次运行时将这些图像复制到该位置
- 如何处理用户添加到应用程序中的图像
- 对于您的默认食物,如何处理您的起始图像
- 由于用户或其他应用程序可以随时删除该文件,因此您的应用程序可以在不再存在的图像中存活
- 您的用户不介意图像会被其他应用程序(如照片库)拾取
- 这里有两个不同的问题:
为用户添加的图像使用具有一些含义:
ACTION\u GET\u CONTENT
和/或ACTION\u OPEN\u DOCUMENT
获取图像),但您修改的副本将是应用程序的私有副本
我真诚地希望您使用,like,来加载这些图像,因为它们将为您处理背景线程和
ListView
/RecyclerView
图像回收和其他东西
在这种情况下,您在SQLite数据库中为默认食品存储的内容需要是图像加载库可以解释的内容,以便输入您想要的图像
在这种情况下,我建议使用assets/
发送图像和file:///android_asset/...
数据库中的值<代码>file:///android_asset/指向项目中的资产
,因此如果项目中有资产/chicken\u pad\u thai.jpg
,毕加索(以及任何像样的图像加载库)将能够解释file:///android_asset/chicken_pad_thai.jpg
)并加载图像
这样可以避免您复制图像,从而在首次启动时节省用户磁盘空间和时间。这也意味着,如果你替换了应用程序中的图像(例如,你得到了一张更好的代表泰国鸡肉垫的照片),用户将开始看到更新后的图像,而无需你做一些额外的工作来意识到你已经发布了一张新图像,并且必须将该图像复制到某个文件中
现在,假设您确实希望用户提供的映像位于外部存储器上。在这种情况下:
- 可能不是您选择的目录,而是使用
(在getExternalFilesDir()
上的一种方法),就像在API级别19+上一样,您不需要将Context
作为权限WRITE\u EXTERNAL\u STORAGE
- 如果您希望用户能够操作默认食品的图像,那么在第一次运行时将这些图像复制到该位置