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

如何在Android应用中实现VideoView内MP4视频跨应用分享

实现VideoView本地MP4视频分享的具体方案

首先你需要明确:视频无法像图片一样从VideoView中直接导出内容,必须提前拿到你正在播放的.mp4文件的本地绝对路径(你用来给VideoView设置播放源的路径就是你需要的路径)。

适配你原有逻辑的实现代码

你可以直接参考已有的图片分享逻辑修改,不需要对视频做转码压缩,直接读取本地文件构建分享Intent即可,示例如下:

public class VideoActivity extends AppCompatActivity {
    VideoView mparticularvideo;
    View share;
    // 存储待分享视频的本地路径
    String videoLocalPath;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_video);
        getSupportActionBar().setTitle("视频");
        mparticularvideo = findViewById(R.id.particularVideo);
        share = findViewById(R.id.share);

        // 给videoLocalPath赋值,就是你用来给VideoView设置播放源的文件路径
        // 比如从跳转Intent取:videoLocalPath = getIntent().getStringExtra("video_path");
        mparticularvideo.setVideoPath(videoLocalPath);
        mparticularvideo.start();

        share.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                shareVideo();
            }
        });
    }

    private void shareVideo() {
        // 沿用你原有的StrictMode配置,绕过7.0+的文件暴露限制
        StrictMode.VmPolicy.Builder builder = new StrictMode.VmPolicy.Builder();
        StrictMode.setVmPolicy(builder.build());
        
        File videoFile = new File(videoLocalPath);
        Intent intent;
        try {
            intent = new Intent(Intent.ACTION_SEND);
            // 把MIME类型改成mp4视频对应的格式
            intent.setType("video/mp4");
            intent.putExtra(Intent.EXTRA_STREAM, Uri.fromFile(videoFile));
            intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
        } catch (Exception e) {
            throw new RuntimeException(e);
        }
        startActivity(Intent.createChooser(intent, "分享这个视频到:"));
    }
}

高版本系统兼容优化(可选)

你当前用StrictMode绕过文件权限的方式不是官方推荐方案,Android 7.0及以上系统建议使用FileProvider实现文件分享,避免后续系统版本升级出现兼容问题:

  • 在AndroidManifest.xml中注册FileProvider组件
  • 新增res/xml/file_paths.xml配置可分享的文件路径范围
  • 分享时用FileProvider.getUriForFile(context, 你的Provider授权字符串, videoFile)替换Uri.fromFile(videoFile)
  • 给Intent添加临时读取权限:intent.addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION)

内容的提问来源于stack exchange,提问作者RUSHIKESH SONAWANE

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.07 15:15:03