I want to download a zip file from a particular zip link and then unzip that zip file in android.What should i do? Can I use android download manager?

有帮助吗?

解决方案

Yes you can use it, here is a small snippet:

DownloadManager dm = (DownloadManager) getSystemService(Context.DOWNLOAD_SERVICE);
DownloadManager.Request req = new DownloadManager.Request(Uri.parse("url-of-the-zip"));
req.setDestinationExternalFilesDir(Environment.DIRECTORY_DOWNLOADS, "filename.zip");
long id = dm.enqueue(req);

The id can later be used to request the local Uri of the downloaded file using DownloadManager.getUriForDownloadedFile(int). To unzip this file you can use ZipFile

其他提示

Hi download zip file path is show below,

                URL url = new URL("ZIP_FILE");
                HttpURLConnection c = (HttpURLConnection) url.openConnection();
                c.setRequestMethod("GET");
                c.setDoOutput(true);
                c.connect();

                int lenghtOfFile = c.getContentLength();
//              Log.d("ANDRO_ASYNC", "Lenght of file: " + lenghtOfFile);
                InputStream input = new BufferedInputStream(url.openStream());


                Long size = Long.parseLong(String.valueOf(input.available()));
                StatFs stat = new StatFs(activity.getParent().getFilesDir().getAbsolutePath());
                long freeBytes = ((long)stat.getAvailableBlocks()) * stat.getBlockSize();
//              Log.e("TOTAL AVAILABLE", "@"+input.available() + " FREE" + freeBytes);
                if(freeBytes >= size){

//                  String outFilePath = Environment.getExternalStorageDirectory().toString();
                    String path = outFilePath +"/TEST";

                    File myNewFolder = new File(path);
                    if (!myNewFolder.isDirectory()) {
                        myNewFolder.mkdirs();
                    }
                    path = path+"/"+"FileName";
                    OutputStream output = new FileOutputStream(path);
                    byte data[] = new byte[1024];
                    long total = 0;
                    int count = 0;
                    publishProgress(0);
                    while ((count = input.read(data)) != -1) {
                        total += count;
                        publishProgress((int)((total*100)/lenghtOfFile));
                        output.write(data, 0, count);
                    }
                    output.flush();
                    output.close();
                    input.close();


                    //path your save location

                }

unzip code is

public void unzipAll(File zipFile, File targetDir) throws IOException {
        Log.i(TAG, "[METHOD] void unzipAll(zipFile:" + zipFile + ", targetDir:" + targetDir + ")");

        ZipInputStream zis = new ZipInputStream(new FileInputStream(zipFile));
        ZipEntry zentry = null;

        // if exists remove
        if (targetDir.exists()) {
            FileUtils.deleteDirectory(targetDir);
            targetDir.mkdirs();
        }
        else {
            targetDir.mkdirs();
        }
        Log.d(TAG, "targetDir: " + targetDir);

        // unzip all entries
        while ((zentry = zis.getNextEntry()) != null) {
            String fileNameToUnzip = zentry.getName();
            File targetFile = new File(targetDir, fileNameToUnzip);

            // if directory
            if (zentry.isDirectory()) {
                (new File(targetFile.getAbsolutePath())).mkdirs();
            }
            else {
                // make parent dir
                (new File(targetFile.getParent())).mkdirs();
                unzipEntry(zis, targetFile);
                Log.d(TAG, "Unzip file: " + targetFile);
            }
        }

        zis.close();
    }

    private File unzipEntry(ZipInputStream zis, File targetFile) throws IOException {
        FileOutputStream fos = new FileOutputStream(targetFile);

        byte[] buffer = new byte[BUFFER_SIZE];
        int len = 0;
        while ((len = zis.read(buffer)) != -1) {
            fos.write(buffer, 0, len);
        }

        return targetFile;
    }

hope this code is help you.. i am using this code for downloading and unzip file

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top