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

时间:2020-04-11 17:26:21

标签: android android-fileprovider

我想使用手机的标准视频播放器应用播放存储在外部存储器中的视频。我尝试使用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和其他社交媒体平台的Chooser,但这不是我想要的,他们都说他们仍然无法处理文件格式。它还提供了使用VLC播放视频的选项,但会立即崩溃。 我已经尝试了所有可能的文件格式,但没有一个起作用。

对不起,如果我缺少明显的内容,我仍然是初学者。

1 个答案:

答案 0 :(得分:1)

.con { display:flex; justify-content: space-between; } <div class="con"> <!-- <span class="match-result__score">{{ match.home_team_final_points }} : {{ match.away_team_final_points }}</span> --> <div> <input placeholder="Home team score" class="home-team-input" type="number" [(ngModel)]="predictionService.predictionFormModel.home_team_predicted_points" name="homeTeamPrediction" id="home-team" #homeTeamPredictionVal="ngModel" min="0" max="1000" required pattern="^[1-1]?[0-9]$" /> <div class="pr" *ngIf="homeTeamPredictionVal.invalid && (homeTeamPredictionVal.dirty || homeTeamPredictionVal.touched)" class="alert alert-danger absolute-home-team"> <div *ngIf="homeTeamPredictionVal.errors.required">This field is required.</div> <div *ngIf="homeTeamPredictionVal.errors.pattern">The score prediction should be between 0-1000.</div> </div> </div> <div> <input placeholder="Away team score" class="away-team-input" type="number" [(ngModel)]="predictionService.predictionFormModel.away_team_predicted_points" name="awayTeamPrediction" id="away-team" #awayTeamPredictionVal="ngModel" min="0" max="1000" required pattern="^[1-1]?[0-9]$" /> <div *ngIf="awayTeamPredictionVal.invalid && (awayTeamPredictionVal.dirty || awayTeamPredictionVal.touched)" class="alert alert-danger absolute-away-team"> <div *ngIf="awayTeamPredictionVal.errors.required">This field is required.</div> <div *ngIf="awayTeamPredictionVal.errors.pattern">The score prediction should be from 0 until 1000. </div> </div> </div> </div> 用于ShareCompat.IntentBuilder,这不是播放视频的典型ACTION_SEND操作。 Intent会更典型。因此,尝试:

ACTION_VIEW