Это лучшее решение, которое мне удалось найти в Интернете.
Я использовал следующую ссылку https://gist.github.com/mhasby/026f02b33fcc4207b302a60645f6e217,
, но у нее была единственная ошибка, которую я исправил, и тогда она работает как брелок.
Вот мой код Вы можете легко использовать его, поскольку это независимый класс Java.
public class CopyAssets {
public static void copyAssets(Context context) {
AssetManager assetManager = context.getAssets();
String[] files = null;
try {
files = assetManager.list("");
} catch (IOException e) {
Log.e("tag", "Failed to get asset file list.", e);
}
if (files != null) for (String filename : files) {
InputStream in = null;
OutputStream out = null;
try {
in = assetManager.open(filename);
out = new FileOutputStream(Environment.getExternalStorageDirectory()+"/www/resources/" + filename);
copyFile(in, out);
} catch(IOException e) {
Log.e("tag", "Failed to copy asset file: " + filename, e);
}
finally {
if (in != null) {
try {
in.close();
in = null;
} catch (IOException e) {
}
}
if (out != null) {
try {
out.flush();
out.close();
out = null;
} catch (IOException e) {
}
}
}
}
}
public static 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);
}
}}
Как видите, просто создайте экземпляр CopyAssets
в своем классе java, который имеет активность. Теперь эта часть важна, насколько я тестирую и изучаю в интернете You cannot use AssetManager if the class has no activity
. Это как-то связано с контекстом класса Java.
Теперь c.copyAssets(getApplicationContext())
- это простой способ доступа к методу, где c
является экземпляром класса CopyAssets
.
В соответствии с моим требованием я позволил программе скопировать все мои файлы ресурсов из папки asset
в /www/resources/
моего внутреннего каталога.
Вы можете легко найти ту часть, где вам нужно внести изменения в каталог в соответствии с вашим использованием.
Не стесняйтесь пинговать меня, если вам нужна помощь.