首页 > 解决方案 > 如何使用 Intent 将视频分享到任何应用程序?

问题描述

问题:共享视频后,当我启动应用程序检查共享视频时,会出现“无法导入”和“视频不再可用”的错误。

安卓版本:奥利奥(8.0)

代码:我正在尝试使用以下代码与使用意图的其他应用程序共享视频:

            Intent share = new Intent(Intent.ACTION_SEND);
            share.setType("video/*");

            share.putExtra(Intent.EXTRA_SUBJECT, "abc");
            share.putExtra(Intent.EXTRA_TITLE, "abcd");

            File imageFileToShare = new File(Environment.getExternalStorageDirectory() + "/mygallery/" + "airp.mp4");

            Uri uri = FileProvider.getUriForFile(Main2Activity.this, "abc.dcf.fileprovider", imageFileToShare);

            share.putExtra(Intent.EXTRA_STREAM, uri);

            share.setPackage("com.abc.in");
            startActivity(Intent.createChooser(share, "Message"));

上面的代码可以正常共享图像,但不能共享视频。

我尝试过什么:我尝试过共享各种文件类型,如 3gp、mkv、mp4,但没有任何效果,我也遇到了各种类似的问题,但在视频的情况下没有解决方案。

请帮助我解决这个问题,以及是否有其他方法可以这样做?

标签: androidandroid-intent

解决方案


您可以将此添加到您的 OnCreate

StrictMode.VmPolicy.Builder builder = new StrictMode.VmPolicy.Builder();
StrictMode.setVmPolicy(builder.build());

如果这对你不起作用,

通过执行此操作将提供程序添加到清单

<provider
   android:name="android.support.v4.content.FileProvider"
   android:authorities="${applicationId}.provider"
   android:exported="false"
   android:grantUriPermissions="true">
      <meta-data
         android:name="android.support.FILE_PROVIDER_PATHS"
         android:resource="@xml/provider_paths"/>
 </provider>

android:name="androidx.core.content.FileProvider"如果您使用的是 androidx,请记住使用

在 xml 目录 (res/xml) 中创建一个文件并命名 provider_paths.xml

<?xml version="1.0" encoding="utf-8"?>
<paths xmlns:android="http://schemas.android.com/apk/res/android">
    <external-path name="external_files" path="."/>
</paths>

代替

Uri uri = FileProvider.getUriForFile(Main2Activity.this, "abc.dcf.fileprovider", imageFileToShare);

有了这个

Uri uri = FileProvider.getUriForFile(Main2Activity.this, BuildConfig.APPLICATION_ID + ".provider",imageFileToShare);

推荐阅读