У меня есть некоторые изображения, которые должны отображаться в приложении, вопрос: как скопировать изображения, которые я помещаю в папку с ресурсами в коде, в папку под картой SC пользователя при установке приложения на телефон
копировать изображения с Assest на SD-карту при установке приложения для Android
Ответы (2)
Попробуйте с этим,
private void copyAssets() {
AssetManager assetManager = getAssets();
String[] files = null;
try {
files = assetManager.list("");
} catch (IOException e) {
Log.e("tag", e.getMessage());
}
for(String filename : files) {
InputStream in = null;
OutputStream out = null;
try {
in = assetManager.open(filename);
out = new FileOutputStream("/sdcard/" + filename);
copyFile(in, out);
in.close();
in = null;
out.flush();
out.close();
out = null;
} catch(Exception e) {
Log.e("tag", e.getMessage());
}
}
}
private void copyFile(InputStream in, OutputStream out) throws IOException {
byte[] buffer = new byte[1024];
int read;
while((read = in.read(buffer)) != -1){
out.write(buffer, 0, read);
}
}
Не забудьте добавить это разрешение в свой манифест
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
person
Aerrow
schedule
29.08.2012
это папка с ресурсами вашего приложения.
- person Aerrow; 29.08.2012
как я могу проверить, впервые ли пользователь запускает приложение, так как я не хочу каждый раз, когда происходит копирование ?!
- person omnia Mm; 29.08.2012
проверьте длину папки sdCard, если она пуста, значит, вы скопируете, в противном случае вы этого не сделаете.
- person Aerrow; 29.08.2012
out = новый FileOutputStream (/ sdcard / + filename); ,, произошла ошибка файл не существует
- person omnia Mm; 29.08.2012
Прежде всего создайте каталог для перемещения изображений. затем пользователь out = new FileOutputStream (/ sdcard / Your_Folder + filename);
- person Aerrow; 29.08.2012
Поэтому мне нужно было сделать что-то подобное, за исключением всех файлов и пакета AOSP при загрузке. Вот ссылка на пакет, если кому-то интересно (см. AssetCopyReceiver.java).
Это скопирует все файлы на SD-карте в соответствующие места, а также будет работать с подкаталогами. Он работает как приемник при загрузке, который не будет работать для обычного приложения, поэтому его нужно будет изменить, но код тот же. Он в значительной степени основан на первом ответе, поскольку я начал с него, и исправил некоторые проблемы, которые я обнаружил, поскольку мне нужно было его расширить.
person
Andrew T.
schedule
03.02.2014