Felizmente, podemos utilizar deste recurso no Android através de códigos Java, onde iremos introduzir nosso arquivo ZIP na pasta assets do projeto.
Para isso, devemos criar uma classe que nos auxiliará neste processo, seu construtor deve ter o parâmetro de todos os RESOURCES do projeto e ela deve herdar de Thread para que seja um processo assíncrono ao da Activity do aplicativo.
A primeira coisa que devemos fazer é declarar o caminho até a pasta onde salvaremos todos os arquivos do zip, e claro, devemos também verificar se ele existe, pois se ele não existir, devemos criar esse diretório no SD CARD do aparelho.
- public void unzip() {
- private String path = Environment.getExternalStorageDirectory().getAbsolutePath()+"/Zip";
- private boolean mounted = Environment.getExternalStorageDirectory().equals(Environment.MEDIA_MOUNTED);
- File f = new File(path);
- if(mounted) {
- if(!dir.exists()) {
- dir.mkdir();
- }
- try {
- InputStream is = this.resources.getAssets().open("meuArquivo.zip");
- byte[] buffer = new byte[1024];
- ZipInputStream zipStream = new ZipInputStream(is);
- ZipEntry entry = zipStream.getNextEntry();
- while (entry != null) {
- f = new File(path + "/" + entry.getName());
- if(f.getAbsolutePath().contains(".")) {
- // É um arquivo...
- FileOutputStream fos = new FileOutputStream(f);
- int i;
- while((i = zipStream.read(buffer, 0, 1024)) > -1) {
- fos.write(buffer, 0, i);
- }
- fos.close();
- zipStream.closeEntry();
- } else {
- // É um diretório...
- f.mkdir();
- }
- entry = zipStream.getNextEntry();
- }
- zipStream.close();
- } catch (IOException e) {
- e.printStackTrance();
- }
- }
- }
Fácil né? :)
Agora é moleza, em sua activity a unica coisa que você precisa fazer é instanciar a nossa Thread e chamar o método run() dele.
[]'s
Felipe Bonezi
Nenhum comentário:
Postar um comentário