я это уже пытался делать. только сейчас понял, почему не работало. с контекстами напутано было.
короче, вот
РАБОЧИЙ ВАРИАНТ:
package ru.tururu.turu;
import java.io.*;
import java.util.zip.*;
import android.content.Context;
import android.graphics.drawable.Drawable;
public class Unzip {
// тут другие функции будут
// ...
/* Чтение картинки из архива в Assets. Пример вызова из Activity:
* imageview1.setImageDrawable(Unzip.zipAssetsDrawable(
* "image1.jpg", getApplicationContext()));
* в папке Assets открывается архив assets.zip и из него извлекается
* картинка filename сразу в Drawable */
public static Drawable zipAssetsDrawable(String filename, Context context) {
Drawable d = null;
String zipfilename = "assets.zip";
try {
InputStream is = context.getAssets().open(zipfilename);
ZipInputStream zipinputstream = new ZipInputStream(is);
ZipEntry zipentry = zipinputstream.getNextEntry();
while (zipentry != null) {
String entryName = zipentry.getName();
if (entryName.equalsIgnoreCase(filename)) {
d = Drawable.createFromStream(zipinputstream, entryName);
zipinputstream.closeEntry();
}
zipentry = zipinputstream.getNextEntry();
}
zipinputstream.close();
} catch (Exception e) {
e.printStackTrace();
}
return d;
}
/* чтение картинки из архива на диске
* в zipfilename - путь и имя архива, в filename - имя искомого файла
* пример вызова из Assets:
* imageview1.setImageDrawable(Unzip.zipFileDrawable(
* "/mnt/sdcard/Android/data/TestProject/archive.zip", "image1.jpg"); */
public static Drawable zipFileDrawable(String zipfilename, String filename) {
Drawable d = null;
try {
FileInputStream is = new FileInputStream(zipfilename);
ZipInputStream zipinputstream = new ZipInputStream(is);
ZipEntry zipentry = zipinputstream.getNextEntry();
while (zipentry != null) {
String entryName = zipentry.getName();
if (entryName.equalsIgnoreCase(filename)) {
d = Drawable.createFromStream(zipinputstream, entryName);
zipinputstream.closeEntry();
}
zipentry = zipinputstream.getNextEntry();
}
zipinputstream.close();
} catch (Exception e) {
e.printStackTrace();
}
return d;
}
}
всё, теперь можно делать редактор ресурсов под виндой, а результат сохранять в виде архива, который закидывается в ассетс или на флешку