Abrir la aplicación de la galería de Android intención

Estoy buscando una manera de abrir la Android galería de Android desde un bash.

No quiero devolver una imagen, sino simplemente abrir la galería para permitir que el usuario la use como si la hubiera seleccionado desde el iniciador ( View pictures/folders ).

He intentado hacer lo siguiente:

 Intent intent = new Intent(); intent.setAction(android.content.Intent.ACTION_GET_CONTENT); intent.setType("image/*"); intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); startActivity(intent); 

Sin embargo, esto hace que la aplicación se cierre cuando selecciono una imagen (sé que esto se debe a ACTION_GET_CONTENT ), pero necesito abrir la galería.

Cualquier ayuda sería genial.

Gracias

Espero que esto ayude. Este código funciona para mí.

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

ResultCode se usa para actualizar la imagen seleccionada a Gallery View

 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); if (cursor == null || cursor.getCount() < 1) { return; // no cursor or no record. DO YOUR ERROR HANDLING } cursor.moveToFirst(); int columnIndex = cursor.getColumnIndex(filePathColumn[0]); if(columnIndex < 0) // no column index return; // DO YOUR ERROR HANDLING String picturePath = cursor.getString(columnIndex); cursor.close(); // close cursor photo = decodeFilePath(picturePath.toString()); List bitmap = new ArrayList(); bitmap.add(photo); ImageAdapter imageAdapter = new ImageAdapter( AddIncidentScreen.this, bitmap); imageAdapter.notifyDataSetChanged(); newTagImage.setAdapter(imageAdapter); } 

Esto es lo que necesitas:

 ACTION_VIEW 

Cambia tu código a:

 Intent intent = new Intent(); intent.setAction(android.content.Intent.ACTION_VIEW); intent.setType("image/*"); intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); startActivity(intent); 

Puede abrir la galería con el siguiente bash:

 public static final int RESULT_GALLERY = 0; Intent galleryIntent = new Intent( Intent.ACTION_PICK, android.provider.MediaStore.Images.Media.EXTERNAL_CONTENT_URI); startActivityForResult(galleryIntent , RESULT_GALLERY ); 

Si quiere obtener un URI de resultado o hacer algo más, use esto:

 @Override public void onActivityResult(int requestCode, int resultCode, Intent data) { super.onActivityResult(requestCode, resultCode, data); switch (requestCode) { case QuestionEntryView.RESULT_GALLERY : if (null != data) { imageUri = data.getData(); //Do whatever that you desire here. or leave this blank } break; default: break; } } 

Probado en Android 4.0+

  1. A continuación se puede usar en Actividad o Fragmento.

      private File mCurrentPhoto; 
  2. Agregar permisos

       
  3. Agregue Intents para abrir “selector de imágenes” y “captura de fotos”

     //A system-based view to select photos. private void dispatchPhotoSelectionIntent() { Intent galleryIntent = new Intent(Intent.ACTION_PICK, android.provider.MediaStore.Images.Media.EXTERNAL_CONTENT_URI); this.startActivityForResult(galleryIntent, REQUEST_IMAGE_SELECTOR); } //Open system camera application to capture a photo. private void dispatchTakePictureIntent() { Intent takePictureIntent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE); // Ensure that there's a camera activity to handle the intent if (takePictureIntent.resolveActivity(App.Instance.getPackageManager()) != null) { try { createImageFile(); } catch (IOException ex) { // Error occurred while creating the File } // Continue only if the File was successfully created if (mCurrentPhoto != null) { takePictureIntent.putExtra(MediaStore.EXTRA_OUTPUT, Uri.fromFile(mCurrentPhoto)); startActivityForResult(takePictureIntent, REQUEST_IMAGE_CAPTURE); } } } 
  4. Agregue el manejo al obtener una foto.

     @Override public void onActivityResult(int requestCode, int resultCode, Intent data) { switch (requestCode) { case REQUEST_IMAGE_SELECTOR: if (resultCode == Activity.RESULT_OK && data != null && data.getData() != null) { String[] filePathColumn = { MediaStore.Images.Media.DATA }; Cursor cursor = App.Instance.getContentResolver().query(data.getData(), filePathColumn, null, null, null); if (cursor == null || cursor.getCount() < 1) { mCurrentPhoto = null; break; } cursor.moveToFirst(); int columnIndex = cursor.getColumnIndex(filePathColumn[0]); if(columnIndex < 0) { // no column index mCurrentPhoto = null; break; } mCurrentPhoto = new File(cursor.getString(columnIndex)); cursor.close(); } else { mCurrentPhoto = null; } break; case REQUEST_IMAGE_CAPTURE: if (resultCode != Activity.RESULT_OK) { mCurrentPhoto = null; } break; } if (mCurrentPhoto != null) { ImageView imageView = (ImageView) [parent].findViewById(R.id.loaded_iv); Picasso.with(App.Instance).load(mCurrentPhoto).into(imageView); } super.onActivityResult(requestCode, resultCode, data); } 

Como no quiere que vuelva un resultado, intente seguir un código simple.

 Intent i=new Intent(Intent.ACTION_PICK); i.setType("image/*"); startActivity(i); 

si alguien sigue obteniendo el error, incluso después de agregar el siguiente código

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