Hello Friends,
Today I am going to share code for unzip a file into android phone sd-card. For that I am using File chooser to select a zip file then using ZipInputStream I convert it into unzip file.
Reference- https://github.com/iPaulPro/aFileChooser
Below is the source code, you can download zip code too from below download link-
DOWNLOAD-ZIP-CODE
Thanks,
Manish
Today I am going to share code for unzip a file into android phone sd-card. For that I am using File chooser to select a zip file then using ZipInputStream I convert it into unzip file.
Reference- https://github.com/iPaulPro/aFileChooser
Below is the source code, you can download zip code too from below download link-
1)MainActivity.java-
package
com.manish.androidhub4you.zip.unzip;
import java.io.File;
import
android.app.Activity;
import
android.content.ActivityNotFoundException;
import
android.content.Intent;
import android.net.Uri;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import
android.view.View.OnClickListener;
import
android.widget.Button;
import
android.widget.Toast;
import
com.ipaulpro.afilechooser.utils.FileUtils;
public class MainActivity extends Activity implements OnClickListener{
private static final int PICKFILE_RESULT_CODE = 0;
private String mFilePath;
private Button mButtonChoose;
private String mDestinationFile =CommonMethod.unzipDestination.toString()+"/";
@Override
protected void onCreate(Bundle
savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
mButtonChoose=(Button)findViewById(R.id.button_choose);
mButtonChoose.setOnClickListener(this);
}
@Override
public void onClick(View v) {
// TODO Auto-generated
method stub
switch(v.getId()){
case R.id.button_choose:
mShowChooser();
break;
}
}
/*
* (non-Javadoc)
* @see
android.app.Activity#onActivityResult(int, int, android.content.Intent)
*/
protected void onActivityResult(int requestCode, int resultCode, Intent
data) {
super.onActivityResult(requestCode,
resultCode, data);
if (resultCode != RESULT_OK) {
return;
}
switch (requestCode) {
case PICKFILE_RESULT_CODE:
// If the file
selection was successful
if (resultCode == RESULT_OK) {
if (data != null) {
// Get the URI of
the selected file
final Uri uri =
data.getData();
try {
// Create a file
instance from the URI
final File file =
FileUtils.getFile(uri);
mFilePath =
file.getAbsolutePath();
if (uri != null) {
if(CommonMethod.unzipDestination.exists()==false) {
CommonMethod.unzipDestination.mkdirs();
}
Toast.makeText(MainActivity.this,"File
Selected: " + mFilePath,Toast.LENGTH_LONG).show();
CommonMethod.mUnpackZipFile(mFilePath,mDestinationFile);
}
}
catch (Exception e) {
Log.e("FileSelectorTestActivity", "File select
error",e);
}
}
}
break;
}
}
/**
* method for open a chooser to choose zip
file
*/
private void mShowChooser() {
// Use the
GET_CONTENT intent from the utility class
Intent
target = FileUtils.createGetContentIntent();
// Create the
chooser Intent
Intent
intent = Intent.createChooser(target,
getString(R.string.choose_file));
try {
startActivityForResult(intent,
PICKFILE_RESULT_CODE);
}
catch
(ActivityNotFoundException e) {
// The reason for
the existence of aFileChooser
}
}
}
2)CommonMethod.java-
package
com.manish.androidhub4you.zip.unzip;
import
java.io.BufferedInputStream;
import java.io.File;
import
java.io.FileInputStream;
import
java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import
java.util.zip.ZipEntry;
import java.util.zip.ZipInputStream;
/**
*
* @author manish
*
*/
public class CommonMethod {
public static File root =
android.os.Environment.getExternalStorageDirectory();
public static File unzipDestination = new File(root.getAbsolutePath() + "/Androidhub4you/UNZIP");
/**
*
* @param mArchivePath
* @param mZipname
* @param mOutPutStream
* @return
*/
public static boolean
mUnpackZipFile(String mArchivePath,String mOutPutStream) {
InputStream inputstream;
ZipInputStream zipinputstream;
try {
String filename;
inputstream = new
FileInputStream(mArchivePath);
zipinputstream = new ZipInputStream(new
BufferedInputStream(inputstream));
ZipEntry mZipEntry;
byte[] buffer = new byte[1024];
int count;
while ((mZipEntry =
zipinputstream.getNextEntry()) != null) {
filename = mZipEntry.getName();
if (mZipEntry.isDirectory()) {
File fmd = new File(mOutPutStream +
filename);
fmd.mkdirs();
continue;
}
FileOutputStream fileoutputstream = new
FileOutputStream(mOutPutStream + filename);
while ((count =
zipinputstream.read(buffer)) != -1) {
fileoutputstream.write(buffer, 0,
count);
}
fileoutputstream.close();
zipinputstream.closeEntry();
}
zipinputstream.close();
} catch (IOException e) {
e.printStackTrace();
return false;
}
return true;
}
}
3)activity_main.xml-
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
tools:context=".MainActivity" >
<Button
android:id="@+id/button_choose"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentTop="true"
android:layout_centerHorizontal="true"
android:layout_marginTop="44dp"
android:text="Choose file to unzip" />
</RelativeLayout>
3)manifest.xml-
<?xml version="1.0"
encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.manish.androidhub4you.zip.unzip"
android:versionCode="1"
android:versionName="1.0" >
<uses-sdk
android:minSdkVersion="8"
android:targetSdkVersion="18" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"
/>
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"
/>
<application
android:allowBackup="true"
android:icon="@drawable/ic_launcher"
android:label="@string/app_name"
android:theme="@style/AppTheme" >
<activity
android:name="com.manish.androidhub4you.zip.unzip.MainActivity"
android:label="@string/app_name" >
<intent-filter>
<action android:name="android.intent.action.MAIN"
/>
<category android:name="android.intent.category.LAUNCHER"
/>
</intent-filter>
</activity>
<activity
android:name="com.ipaulpro.afilechooser.FileChooserActivity"
android:exported="false" >
<intent-filter>
<action android:name="android.intent.action.GET_CONTENT"
/>
<category android:name="android.intent.category.DEFAULT"
/>
<category android:name="android.intent.category.OPENABLE"
/>
<data android:mimeType="*/*"
/>
</intent-filter>
</activity>
</application>
</manifest>
Thanks,
Manish