通过按钮将视频从相册加载到VideoView

3
我正在尝试通过按钮从图库加载视频到VideoView。当我运行应用程序并点击“加载视频”按钮时,它会加载视频,但是只播放该视频文件的音频而没有视频。我还在清单文件中添加了READ_EXTERNAL_STORAGE权限。
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/>

这是我的VideoView:

<VideoView
    android:layout_width="wrap_content"
    android:layout_height="250dp"
    android:id="@+id/videoView"
    android:layout_centerVertical="true"
    android:layout_alignParentStart="true" />

请帮助我。
我的代码:
public class MainActivity extends AppCompatActivity {
    VideoView videoField;
    Button LoadVid;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        LoadVid = (Button)findViewById(R.id.LoadVid);
        videoField = (VideoView)findViewById(R.id.videoView);
        LoadVid.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                Intent i = new Intent(Intent.ACTION_PICK, MediaStore.Video.Media.EXTERNAL_CONTENT_URI);
                startActivityForResult(i, 0);
            }
        });
    }
    @Override
       protected void onActivityResult(int requestCode, int resultCode, Intent data) {
        super.onActivityResult(requestCode, resultCode, data);
        if(resultCode == RESULT_OK){
            Uri video = data.getData();
            videoField.setVideoURI(video);
            videoField.start();
        }
    }
}

你没有正确获取视频路径。 - K Guru
我尝试了,但没找到有用的。你能帮我处理一下吗? - M Ayaz Khan
1个回答

4
你应该像这样将setVideoURI代码放在try catch块中:
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
    super.onActivityResult(requestCode, resultCode, data);

    if(resultCode == RESULT_OK){
        Uri uri = data.getData();
        try{
            videoField.setVideoURI(uri);
            videoField.start();
        }catch(Exception e){
            e.printStackTrace();
        }
    }
}

现在应该可以工作了,因为我已经对其进行了测试。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接