Domanda

Voglio riprodurre un file video registrato per essere riprodotto nel mediaplayer di Android. Voglio chiamare il lettore multimediale attraverso l'intento e voglio riprodurre il file corrispondente dell'URI superato. Quando stavo provando, sto ricevendo un'eccezione che l'attività non può Qualcuno mi aiuta con un codice.

@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;
        }
    }
}

Questo è il mio codice che sto ottenendo attività non è un'eccezione

È stato utile?

Soluzione

Lo scenario più comune in cui ottieni un'attività non è quando si tenta di lanciare un'attività che hai creato senza dichiararla nel manifest.

Pubblica il tuo codice che usi per avviare l'attività per essere sicuro. Se stai cercando di utilizzare un'attività che dovrebbe essere fornita dal framework esternamente dalla tua applicazione, potresti semplicemente impostare l'intento in modo errato

Aggiornamento dopo il codice pubblicato ...

Il tuo codice sembra utilizzare l'intento intent_action_music_player e passare un URL di immagine come dati (è il percorso di un'immagine o le tue variabili sono appena fuorviate?). Ottieni un'attivitàNotFoundException perché il sistema non ha ricevitori di intenti registrati per gestire quello scenario. Inoltre, se guardi la documentazione per questa costante, vedrai che lo hanno segnato a un certo punto:

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

Normalmente userei intent.action_view e passare un tipo di mimo insieme ai dati. Qualcosa come il seguente ...

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

Passando il tipo MIME di "Video/*" a SetDataAndType, sei più specifico con la tua richiesta al sistema.

Se si desidera interrogare il sistema per scoprire se è possibile gestire un intento (il che significa che il dispositivo dell'utente che esegue il codice ha un'attività registrata in grado di gestire l'intento), è possibile utilizzare il metodo PackAgeManager.QueryIntentaTattività:

queryintentattività

Altri suggerimenti

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);

Questo è il codice che mi ha aiutato

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top