大佬教程收集整理的这篇文章主要介绍了android – 从内容uri获取所拍摄视频的文件,大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
private String getRealPathFromUriForVideos(Uri SELEctedVideoUri) { String wholEID = DocumentsContract.getDocumentId(SELEctedVideoUri); String id = wholEID.split(":")[1]; String[] column = { MediaStore.Video.Media.DATA }; String sel = MediaStore.Video.Media._ID + "=?"; cursor cursor = getContentResolver().query(MediaStore.Video.Media.EXTERNAL_CONTENT_URI,column,sel,new String[]{ id },null); String filePath = ""; int columnIndex = cursor.getcolumnIndex(column[0]); if (cursor.moveToFirst()) { filePath = cursor.getString(columnIndeX); } cursor.close(); return filePath; }
这可以很好地获取用户选择的视频文件.但是,我想让用户也可以创建新视频(来自我的应用),然后从那里获取URI和文件.新创建的视频的URI是:content:// media / external / video / media / 41.对于选定的视频,如内容://com.android.providers.media.documents/document/video:42.
它适用于第二个,但不适用于第一个.第一个我得到IllegalArgumentexception,因为它不是文档URI.如何从第一个URI获取文件?
它可能在少数情况下有效.它一般不起作用.你从ACTION_OPEN_DOCUMENT这样的东西获得的Uri不必代表一个文件,更不用说你可以通过文件系统访问的文件,更不用说这个脚本小子算法允许你访问的文件了.
不必要.我想有一种方法可以让你为录制的视频获得类似的Uri,虽然我无法想到推荐的方式会给你这样的Uri.如果您使用的是MediaRecorder或ACTION_VIDEO_CAPTURE,则可以创建自己的文件(对于ACTION_VIDEO_CAPTURE,您可以创建自己的文件Uri).而且,如果您要创建自己的文件,则可以知道该文件的位置.
使用一些允许您从Uri或InputStream上传的库.除此以外:
>使用COntentResolver和openFileinput()在Uri表示的内容上获取InputStream
>在您控制的某个文件上创建FiLeoutputStream(例如,在getCacheDir()中)
>将内容从InputStream复制到OutputStream
>使用您的副本进行上传
>完成工作后删除副本
您将外部Uri视为Web服务器的URL:流式传输内容.
以上是大佬教程为你收集整理的android – 从内容uri获取所拍摄视频的文件全部内容,希望文章能够帮你解决android – 从内容uri获取所拍摄视频的文件所遇到的程序开发问题。
如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。