Sunday, August 12, 2012

How to Pick Image from Gallery in Android



Today I just learn and going to share with you,
how we can get an image From Gallery in our Android app
so below is the step by step description also at last
you can find zip source code of this example.

We will create very simple app to do this work
 -------------------------------------------
App Name: PickGalleryImage
Package Name: com.rdc.activity
Android SDK: Android SDK 2.3.3 / API 10
Default Activity Name: PickGalleryImageActivity.java
-------------------------------------------

PickGalleryImageActivity.java

package com.rdc.activity;

import android.app.Activity;
import android.content.Intent;
import android.database.Cursor;
import android.graphics.BitmapFactory;
import android.net.Uri;
import android.os.Bundle;
import android.provider.MediaStore;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.ImageView;

public class PickGalleryImageActivity extends Activity implements
		OnClickListener {

	private static int RESULT_LOAD_IMAGE = 1;
	private Button btnLoadImage = null;
	private ImageView imageView = null;

	@Override
	public void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.main);

		btnLoadImage = (Button) findViewById(R.id.button_LoadPicture);
		btnLoadImage.setOnClickListener(this);
	}

	@Override
	public void onClick(View v) {

		Intent i = new Intent(Intent.ACTION_PICK,
				android.provider.MediaStore
                              .Images.Media.EXTERNAL_CONTENT_URI);

		startActivityForResult(i, RESULT_LOAD_IMAGE);

	}
	
	
	@Override
    protected void onActivityResult(int requestCode, 
                                     int resultCode, Intent data) {
    	super.onActivityResult(requestCode, resultCode, data);
    	
		if (requestCode == RESULT_LOAD_IMAGE && 
                              resultCode == RESULT_OK && null != data) {
			Uri selectedImage = data.getData();
			String[] filePathColumn = { MediaStore.Images.Media.DATA };

			Cursor cursor = getContentResolver().query(selectedImage,
					filePathColumn, null, null, null);
			cursor.moveToFirst();

			int columnIndex = cursor.getColumnIndex(filePathColumn[0]);
			String picturePath = cursor.getString(columnIndex);
			cursor.close();
			
			imageView = (ImageView) findViewById(R.id.imageView);
			imageView.setImageBitmap(BitmapFactory
                            .decodeFile(picturePath));
		
		}
    
    
    }
	
}
main.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
	xmlns:android="http://schemas.android.com/apk/res/android"
	android:orientation="vertical"
	android:layout_width="fill_parent"
	android:layout_height="fill_parent">
	<ImageView
		android:layout_width="fill_parent"
		android:layout_weight="1"
		android:layout_height="wrap_content"
		android:id="@+id/imageView"></ImageView>
	<Button
		android:layout_height="wrap_content"
		android:text="Load Picture"
		android:layout_width="wrap_content"
		android:layout_weight="0"
		android:layout_gravity="center"
		android:id="@+id/button_LoadPicture"></Button>
</LinearLayout>

AndroidManifest.xml
<?xml version="1.0" encoding="utf-8"?>
<manifest
	xmlns:android="http://schemas.android.com/apk/res/android"
	package="com.rdc.activity"
	android:versionCode="1"
	android:versionName="1.0">
	<uses-sdk android:minSdkVersion="10" />

	<application
		android:icon="@drawable/icon"
		android:label="@string/app_name">
		<activity
			android:name=".PickGalleryImageActivity"
			android:label="@string/app_name">
			<intent-filter>
				<action android:name="android.intent.action.MAIN" />
				<category android:name="android.intent.category.LAUNCHER" />
			</intent-filter>
		</activity>

	</application>
</manifest>

The output Screen will be like this..

Note: before click on upload image button make sure your Android Device is not connected with Computer.

Click to upload image


Just select any one image and see you got it here


You can download the complete source code zip file here : PickGalleryimage.zip