Pregunta

Quiero reproducir un archivo de video grabado para reproducirse en el medioplayer de Android. Quiero llamar al reproductor multimedia a través de la intención y quiero reproducir el archivo correspondiente del URI aprobado. Cuando lo intenté, estoy obteniendo una actividad de excepción que no sean. Alguien me ayude con un código.

@Override
    protected void onActivityResult(int requestCode, int resultCode, Intent data) {
        // TODO Auto-generated method stub
        if (resultCode == RESULT_OK) {
            if (requestCode == REQUEST_VIDEO_CAPTURED) {
                uriVideo = data.getData();
                Toast.makeText(VedioRecording.this, uriVideo.getPath(),
                        Toast.LENGTH_LONG).show();
            }
        } else if (resultCode == RESULT_CANCELED) {
            uriVideo = null;
            Toast.makeText(VedioRecording.this, "Cancelled!", Toast.LENGTH_LONG)
                    .show();
        }
        if (requestCode == 2) {
            selectedImageUri = data.getData();

            // OI FILE Manager
            filemanagerstring = selectedImageUri.getPath();

            // MEDIA GALLERY
            selectedImagePath = getPath(selectedImageUri);

            Intent intent1 = new Intent(android.provider.MediaStore.INTENT_ACTION_MUSIC_PLAYER).setData(selectedImageUri);

            startActivityForResult(intent1, 3);
//          videoviewPlay.setVideoURI(selectedImageUri);
//          videoviewPlay.start();
        }
        if (requestCode == 3) {

        }
    }


    private String getPath(Uri uri) {
        String[] projection = { MediaStore.Video.Media.DATA };
        Cursor cursor = managedQuery(uri, projection, null, null, null);
        if (cursor != null) {
            // HERE YOU WILL GET A NULLPOINTER IF CURSOR IS NULL
            // THIS CAN BE, IF YOU USED OI FILE MANAGER FOR PICKING THE MEDIA
            int column_index = cursor
                    .getColumnIndexOrThrow(MediaStore.Video.Media.DATA);
            cursor.moveToFirst();
            return cursor.getString(column_index);
        } else {
            return null;
        }
    }
}

Este es mi código, estoy obteniendo actividades no excluidas.

¿Fue útil?

Solución

El escenario más común en el que obtienes una excepción no es decir, cuando intentas lanzar una actividad que has creado sin declararla en el manifiesto.

Publique su código que use para iniciar la actividad para estar seguro. Si está tratando de utilizar una actividad que debe proporcionar el marco externamente de su aplicación, puede estar configurando la intención incorrectamente

Actualización tras código publicado ...

Su código parece estar utilizando la acción de intención intent_action_music_player y pasar una URL de imagen como datos (¿es la ruta a una imagen o sus variables están simplemente nombradas?). Obtiene una actividad NotFoundException porque el sistema no tiene ningún receptores de intención registrado para manejar ese escenario. Además, si observa la documentación de esta constante, verá que la marcaron en algún momento:

http://developer.android.com/reference/android/provider/mediastore.html#intent_action_music_player

Normalmente usaría intento.action_view y pasaría un tipo MIME junto con los datos. Algo como lo siguiente ...

Intent intent = new Intent(Intent.ACTION_VIEW);
intent.setDataAndType(Uri.parse(pathToVideoFile), "video/*");
startActivity(intent);

Al pasar el tipo de MIME de "Video/*" a SetDataAndType, está siendo más específico con su solicitud al sistema.

Si desea consultar el sistema para averiguar si se puede manejar una intención (lo que significa que el dispositivo del usuario que ejecuta su código tiene una actividad registrada que puede manejar la intención), puede usar el método PackageManager.QueryIntentActivities:

QueryIntentActivities

Otros consejos

String extension = MimeTypeMap
                        .getFileExtensionFromUrl(selectedImagePath);
                String mimeType = MimeTypeMap.getSingleton()
                        .getMimeTypeFromExtension(extension);
                Intent mediaIntent = new Intent(Intent.ACTION_VIEW);
                mediaIntent.setDataAndType(Uri.parse(selectedImagePath),
                        mimeType);
                startActivity(mediaIntent);

Este es el código que me ayudó

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top