Cómo abrir galería de teléfonos a través de código

Quiero abrir la galería de teléfonos a través de un clic de botón.
En mi actividad tengo un botón, quiero abrir la galería a través de ese botón.

Aquí hay código de ejemplo para la galería abierta de la aplicación.

Intent intent = new Intent(); intent.setType("image/*"); intent.setAction(Intent.ACTION_GET_CONTENT);// startActivityForResult(Intent.createChooser(intent, "Select Picture"),SELECT_IMAGE); 

OnActivityResult para obtener la imagen.

 public void onActivityResult(int requestCode, int resultCode, Intent data) { super.onActivityResult(requestCode, resultCode, data); if (requestCode == SELECT_IMAGE) { if (resultCode == Activity.RESULT_OK) { if (data != null) { try { Bitmap bitmap = MediaStore.Images.Media.getBitmap(getActivity().getContentResolver(), data.getData()); } catch (IOException e) { e.printStackTrace(); } } } else if (resultCode == Activity.RESULT_CANCELED) { Toast.makeText(getActivity(), "Cancelled", Toast.LENGTH_SHORT).show(); } } } 

Para enlazar su oyente de clic de botón: (Esto debe estar en su método onCreate.)

 ImageButton btn_choose_photo = (ImageButton) findViewById(R.id.add_photo_choose_photo); // Replace with id of your button. btn_choose_photo.setOnClickListener(btnChoosePhotoPressed); 

Para abrir la galería: (Debe estar en su clase de actividad.)

 public OnClickListener btnChoosePhotoPressed = new OnClickListener() { @Override public void onClick(View v) { Intent i = new Intent(Intent.ACTION_PICK, android.provider.MediaStore.Images.Media.INTERNAL_CONTENT_URI); final int ACTIVITY_SELECT_IMAGE = 1234; startActivityForResult(i, ACTIVITY_SELECT_IMAGE); } }; 

Para obtener la imagen elegida: (Debe estar en su clase de actividad.)

 protected void onActivityResult(int requestCode, int resultCode, Intent data) { super.onActivityResult(requestCode, resultCode, data); switch(requestCode) { case 1234: if(resultCode == RESULT_OK){ 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 filePath = cursor.getString(columnIndex); cursor.close(); Bitmap yourSelectedImage = BitmapFactory.decodeFile(filePath); /* Now you have choosen image in Bitmap format in object "yourSelectedImage". You can use it in way you want! */ } } }; 

En OnClickListenner de su botón, cree esta intención:

 Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse( "content://media/internal/images/media")); 

¿Esto encaja con sus expectativas?

Pruebe este ejemplo, funcionó para mí abrir mi galería haciendo clic en un botón Estoy seguro de que esto funcionará para usted

 public class MainActivity extends Activity { private static final int SELECT_PICTURE = 1; private String selectedImagePath; private ImageView img; public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); img = (ImageView)findViewById(R.id.imageView1); ((Button) findViewById(R.id.button1)) .setOnClickListener(new OnClickListener() { public void onClick(View arg0) { Intent intent = new Intent(); intent.setType("image/*"); intent.setAction(Intent.ACTION_GET_CONTENT); startActivityForResult(Intent.createChooser(intent,"Select Picture"), SELECT_PICTURE); } }); } public void onActivityResult(int requestCode, int resultCode, Intent data) { if (resultCode == RESULT_OK) { if (requestCode == SELECT_PICTURE) { Uri selectedImageUri = data.getData(); selectedImagePath = getPath(selectedImageUri); System.out.println("Image Path : " + selectedImagePath); img.setImageURI(selectedImageUri); } } } public String getPath(Uri uri) { String[] projection = { MediaStore.Images.Media.DATA }; Cursor cursor = managedQuery(uri, projection, null, null, null); int column_index = cursor.getColumnIndexOrThrow(MediaStore.Images.Media.DATA); cursor.moveToFirst(); return cursor.getString(column_index); } } 

Y aquí es su main.xml debe ser parece

 <?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" > <TextView android:layout_width="fill_parent" android:layout_height="wrap_content" android:text="@string/hello" /> <Button android:text="Browse gallery" android:id="@+id/button1" android:layout_width="wrap_content" android:layout_height="wrap_content"> </Button> <ImageView android:id="@+id/imageView1" android:layout_width="wrap_content" android:layout_height="wrap_content"> </ImageView> </LinearLayout> 

También en MainActivity.java, agregue todas estas importaciones

 import android.app.Activity; import android.content.Intent; import android.database.Cursor; 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; 

Aplique este ejemplo y ya está terminado 🙂

FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.