开发者

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();
        }
    }
}
0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜