Android   发布时间:2022-04-28  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了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获取文件

解决方法

@H_607_16@

它可能在少数情况下有效.它一般不起作用.你从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,请注明来意。