You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

调用MediaStore.ACTION_VIDEO_CAPTURE传参闪退不传参无法获取视频如何解决

问题根因分析

从报错日志可直接定位核心异常:MediaStore.EXTRA_OUTPUT 要求传入实现Parcelable接口的Uri类型参数,代码中将Uri转为字符串传入,触发系统读取参数时的类型转换异常,导致闪退。
另外额外注意:Android 7.0(API 24)及以上版本禁止应用对外暴露file://类型的Uri,直接使用Uri.fromFile()传递给系统相机后续还会触发权限异常,需要同步适配。

修复步骤
  • 第一步:修复参数类型错误
    把错误代码:

    takeVideoIntent.putExtra(MediaStore.EXTRA_OUTPUT, mImageUri.toString());
    

    替换为:

    takeVideoIntent.putExtra(MediaStore.EXTRA_OUTPUT, mImageUri);
    

    即可解决当前类型转换导致的闪退问题。

  • 第二步:适配Android 7.0+ FileProvider权限规则

    1. 在AndroidManifest.xml的<application>标签内添加Provider配置:
    <provider
        android:name="androidx.core.content.FileProvider"
        android:authorities="${applicationId}.fileprovider"
        android:exported="false"
        android:grantUriPermissions="true">
        <meta-data
            android:name="android.support.FILE_PROVIDER_PATHS"
            android:resource="@xml/file_paths" />
    </provider>
    
    1. 在res/xml目录下新建file_paths.xml文件,配置允许对外共享的文件路径:
    <?xml version="1.0" encoding="utf-8"?>
    <paths xmlns:android="http://schemas.android.com/apk/res/android">
        <!-- 对应你代码中使用的Environment.getExternalStorageDirectory()/MyDir路径 -->
        <external-path name="my_video_path" path="MyDir/" />
    </paths>
    
    1. 修改Uri生成逻辑,兼容不同系统版本:
    Uri mImageUri;
    if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) {
        // 7.0及以上版本用FileProvider生成content://类型Uri
        mImageUri = FileProvider.getUriForFile(this, getPackageName() + ".fileprovider", sdImageMainDirectory);
    } else {
        // 7.0以下版本可直接使用file://类型Uri
        mImageUri = Uri.fromFile(sdImageMainDirectory);
    }
    // 给系统相机应用授予Uri的读写权限
    takeVideoIntent.addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION | Intent.FLAG_GRANT_WRITE_URI_PERMISSION);
    
  • 第三步:权限与结果处理校验

    • Android 6.0到Android 12版本需要先动态申请WRITE_EXTERNAL_STORAGE权限,再调用相机
    • 录制完成的结果回调中,不需要从返回的Intent里取Uri,直接读取你之前创建的sdImageMainDirectory文件即可,设置EXTRA_OUTPUT后系统不会在返回结果中携带视频Uri。

内容的提问来源于stack exchange,提问作者Sam By

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.29 16:27:01