I have a video that I save to .../Movies/MyApp/abcde.mp4
. So I know where it is. When I load it through my app using an implicit intent to ACTION_GET_CONTENT
, the path is returned as content:/media/external/video/media/82
when I do
data.getData().toString()
The problem with that path is that it works when I try to access it with MediaRecorder as
mVideoView.setVideoURI(Uri.parse(mVideoStringPath))
However if I try to convert it to a path in another thread (for a job queue), the file is not found
new File(mVideoStringPath)
when I use the technique (copy and paste) described at How to get file path in onActivityResult in Android 4.4, still get the error
java.lang.RuntimeException: Invalid image file
Also per my logging, the new technique shows the path to the video as
video path: /storage/emulated/0/Movies/MyApp/abc de.mp4
notice the space in abc de.mp4
. that indeed is the name of the file. And the phone's camera app has no trouble playing
答案 0 :(得分:0)
但是,如果我尝试将其转换为另一个线程中的路径(对于作业队列),则找不到该文件
那是因为它不是文件的路径。它是Uri
,它是某些数据的不透明句柄。
如何从onActivityResult获取视频的实际路径
你没有。您使用Uri
。不要求Uri
指向文件。如果Uri
恰好代表文件,则不要求String UserInput = new Scanner(System.in).next();
GradesNonInt = Arrays.asList(UserInput.replaceAll("\\s","").split(","));
System.out.println(GradesNonInt.size());
代表您可以直接访问文件系统的文件。
答案 1 :(得分:-2)
你需要转义文件路径的空间,以便从中构造一个File对象。
filepath.replace(" ", "\\ ");