如何使用 phone 的标准视频播放器应用播放视频

How to play videos with phone's standard video player app

我想使用 phone 的标准视频播放器应用播放存储在外部存储器中的视频。我试过使用 FileProvider,但无法将视频传递给播放器。

private void passVideo(String videoname){
        File videoPath = new File(Environment.getExternalStorageDirectory(), "video_folder");
        File newFile = new File(videoPath, videoname);
        Uri path = FileProvider.getUriForFile(this, "com.example.provider", newFile);
        Intent shareIntent = ShareCompat.IntentBuilder.from(this)
                .setType(getContentResolver().getType(path))
                .setStream(path)
                .getIntent();
        shareIntent.setData(path);
        shareIntent.addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION);
        startActivity(Intent.createChooser(shareIntent, "Open Video..."));
    }

通过这段代码,我设法获得了 gmail、whatsapp 和其他社交媒体平台的选择器,但这不是我想要的,他们都说他们无论如何都无法处理文件格式。它还提供了使用 VLC 播放视频的选项,但它会立即崩溃。 我已经尝试了所有可能的文件格式,并且 none 有效。

对不起,如果我遗漏了一些明显的东西,我还是个初学者。

ShareCompat.IntentBuilder 用于 ACTION_SEND,这不是播放视频的典型 Intent 操作。 ACTION_VIEW 会更典型。所以,试试:

private void passVideo(String videoname){
    File videoPath = new File(Environment.getExternalStorageDirectory(), "video_folder");
    File newFile = new File(videoPath, videoname);
    Uri uri = FileProvider.getUriForFile(this, "com.example.provider", newFile);
    Intent viewIntent = new Intent(Intent.ACTION_VIEW, uri);

    viewIntent.setType(getContentResolver().getType(uri));
    viewIntent.addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION);
    startActivity(viewIntent);
}