tags:

views:

5669

answers:

3

Hi

Just like the iPhone has a UIImagePickerController to let the user access pictures stored on the device, do we have a similar control in the Android SDK?

Thanks.

+3  A: 

I believe what you're after is a content provider called android.provider and a class called MediaStore.Images More information can be found here.

GregD
+19  A: 

You can use startActivityForResult, passing in an Intent that describes an action you want completed and and data source to perform the action on.

Luckily for you, Android includes an Action for picking things: Intent.ACTION__PICK and a data source containing pictures: android.provider.MediaStore.Images.Media.INTERNAL_CONTENT_URI for images on the local device or android.provider.MediaStore.Images.Media.EXTERNAL_CONTENT_URI for images on the SD card.

Call startActivityForResult passing in the pick action and the images you want the user to select from like this:

startActivityForResult(new Intent(Intent.ACTION_PICK, android.provider.MediaStore.Images.Media.INTERNAL_CONTENT_URI), SELECT_IMAGE);

Then override onActivityResult to listen for the user having made a selection.

@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
  super.onActivityResult(requestCode, resultCode, data);
  if (requestCode == SELECT_IMAGE)
    if (resultCode == Activity.RESULT_OK) {
      Uri selectedImage = data.getData();
      // TODO Do something with the select image URI
    } 
}

Once you have the image Uri you can use it to access the image and do whatever you need to do with it.

Reto Meier
A: 

can I pick multiple items (images/videos) rather then just one item (image/video)

Tee
You should post follow-up questions as a separate thread, notas an answer. After all, it doesn't really answer *this*question. Also more people would see it and try to answer if you post it asyour own question.
sth