3

androidのメディアプレイヤーで再生するために録画した動画ファイルを再生したい.インテントを通してメディアプレイヤーを呼び出して、渡されたuriの対応するファイルを再生したい.試していたら例外が発生してActivityNotFoundができる誰でもコードを手伝ってください。

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

これは私のコードです。 activitynotfound 例外が発生しています

4

2 に答える 2

4

ActivityNotFound 例外が発生する最も一般的なシナリオは、作成したアクティビティをマニフェストで宣言せずに起動しようとした場合です。

確実にアクティビティを起動するために使用するコードを投稿してください。アプリケーションの外部でフレームワークによって提供される必要があるアクティビティを使用しようとしている場合は、インテントを正しく設定していない可能性があります

コードが投稿された後に更新...

あなたのコードはインテント アクション INTENT_ACTION_MUSIC_PLAYER を使用し、画像の URL をデータとして渡しているようです (画像へのパスですか、それとも変数の名前が間違っていますか?)。そのシナリオを処理するために登録されたインテント レシーバーがシステムにないため、ActivityNotFoundException が発生します。また、この定数のドキュメントを見ると、ある時点で非推奨とマークされていることがわかります。

http://developer.android.com/reference/android/provider/MediaStore.html#INTENT_ACTION_MUSIC_PLAYER

通常は Intent.ACTION_VIEW を使用し、データとともに MIME タイプを渡します。次のようなもの...

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

「video/*」の MIME タイプを setDataAndType に渡すことで、システムへのリクエストをより具体的にすることができます。

Intent を処理できるかどうか (つまり、コードを実行しているユーザーのデバイスに、Intent を処理できる Activity が登録されていることを意味します) を確認するためにシステムにクエリを実行する場合は、PackageManager.queryIntentActivities メソッドを使用できます。

queryIntentActivities

于 2012-01-17T13:09:52.463 に答える
1
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);

これは私を助けたコードです

于 2012-01-18T12:07:37.970 に答える