在我的应用中,我使用Intent选择视频如下:
Intent intent = new Intent();
intent.setType("video/*");
intent.setAction(Intent.ACTION_GET_CONTENT);
startActivityForResult(intent, SELECT_VIDEO);
然后视频的uri以字符串格式保存在数据库中
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
if (resultCode == RESULT_OK && requestCode == SELECT_VIDEO) {
Uri selectedVideoUri = data.getData();
if (selectedVideoUri != null) {
videoPathList.add(selectedVideoUri.toString());
我从数据库中读取字符串,使用Uri.parse()方法将其转换为uri并使用它来播放视频。然而,我得到了#34;不能播放视频"错误。
VideoView videoView =(VideoView)findViewById(R.id.videoView);
//Creating MediaController
MediaController mediaController= new MediaController(this);
mediaController.setAnchorView(videoView);
Uri uri= Uri.parse(getIntent().getStringExtra("video_path"));
//Setting MediaController and URI, then starting the videoView
videoView.setMediaController(mediaController);
videoView.setVideoURI(uri);
videoView.requestFocus();
videoView.start();
如果我使用onActivityResult()中获得的uri进行播放,则视频播放正常。只有在以字符串格式将uri保存到数据库后才会出现此问题。我该如何解决这个问题?
答案 0 :(得分:0)
然后视频的uri以字符串格式保存在数据库中
以后可能无法使用Uri
。
我该如何解决这个问题?
在Android 4.4及更高版本中,切换为ACTION_OPEN_DOCUMENT
而不是ACTION_GET_CONTENT
。然后,当您获得Uri
时,请在takePersistableUriPermissions()
上致电ContentResolver
。这可以让您持久访问Uri
标识的内容,并且您应该可以稍后播放视频...当然,假设视频仍在那里。
有关此主题的更多信息,请参阅this blog post。