Pregunta

Así que estoy tratando de permitir que el usuario elija una pieza particular de medios con mi aplicación Android utilizando el método descrito aquí:Acceder a imágenes desde la aplicación Pictures en mi aplicación Android

Funciona muy bien, excepto por el hecho de que aparentemente solo puedo elegir entre video o foto para presentar al usuario, no ambos al mismo tiempo. ¿Hay una buena manera de hacer esto con:

startActivityForResult (new Intent (intent.action_pick, android.provider.mediastore.images.media.internal_content_uri), select_image);

¡Gracias!

¿Fue útil?

Solución

He usado esto varias veces. La mejor manera es algo como:

Intent mediaChooser = new Intent(Intent.ACTION_GET_CONTENT);
//comma-separated MIME types
mediaChooser.setType("video/*, images/*");
startActivityForResult(mediaChooser, 1);

Incluso si esto no es perfectamente preciso, ha funcionado bien en todo lo que lo he usado. Abrirá una actividad de la galería con una lista de miniatura de cada imagen/video en la galería del usuario. La intención devuelta a onActivityResult() tiene un adicional llamado "datos" que será un contenido: // uri a los medios seleccionados.

EDITAR: OOPS, para obtener el URI en los medios seleccionados que realmente desea llamar obtener datos() Sobre la intención que se pasa a OnActivityResult ()

Otros consejos

KIVY: la forma más fácil es crear una intención de seleccionar una pieza de medios y restringirlo al video:

Intent pickMedia = new Intent(Intent.ACTION_GET_CONTENT);
pickMedia.setType("video/*");
startActivityForResult(pickMedia,12345);

Nota: 12345 es el entero que su aplicación debe escuchar en una devolución de llamada de solicitud para que pueda enviar cualquier información que reciba donde sea necesario.

Luego debe tener la misma actividad escuchando la información que se enviará de esa intención:

    @Override
    public void onActivityResult(int requestCode, int resultCode, Intent data) {
        super.onActivityResult(requestCode, resultCode, data);
        if (requestCode == 12345) {
            if (resultCode == Activity.RESULT_OK) {
                Uri selectedVideoLocation = data.getData();

                // Do something with the data...
            } 

        }
    }

¿Enfriar?

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

Prueba esto

Intent intent = new Intent(Intent.ACTION_GET_CONTENT);
intent.setType("*/*");
startActivityForResult(intent, 101);
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top