Zip to SD Card from .APK file
This is probably a really dumb/noob like question but what is the best method to have an .apk file that when installed drops a zip file onto the sd card, in a specific di开发者_开发技巧rectory, from the assets or raw folder?
I have an app that needs to do that and what I do is check if what I need is on the SDCard when I run, that way I can replace it if the user deletes it. Here's my code for that:
void copyAssets()
{
String[] files;
try
{
files = this.getResources().getAssets().list("");
}
catch (IOException e1)
{
return;
}
if(!mWorkingPath.exists())
{
if(!mWorkingPath.mkdirs())
{
new AlertDialog.Builder(this)
.setTitle(R.string.ERROR)
.setMessage(R.string.FAILED_DIR_CREATE)
.setPositiveButton(android.R.string.ok, new OnClickListener(){
@Override
public void onClick(DialogInterface dialog, int which)
{
dialog.dismiss();
}
})
.create()
.show();
}
}
for(int i = 0; i < files.length; i++)
{
try
{
String fileName = files[i];
if(fileName.compareTo("images") == 0 ||
fileName.compareTo("sounds") == 0 ||
fileName.compareTo("webkit") == 0)
{
continue;
}
File outFile = new File(mWorkingPath, fileName);
if(outFile.exists()) continue;
InputStream in = getAssets().open(fileName);
OutputStream out = new FileOutputStream(outFile);
// Transfer bytes from in to out
byte[] buf = new byte[1024];
int len;
while ((len = in.read(buf)) > 0)
{
out.write(buf, 0, len);
}
in.close();
out.close();
}
catch (FileNotFoundException e)
{
e.printStackTrace();
}
catch (IOException e)
{
e.printStackTrace();
}
}
}
精彩评论