如何使用Intent将视频分享到任何应用?

时间:2019-04-10 08:49:18

标签: android android-intent

问题:当我启动应用程序以检查共享视频时,共享视频后会显示“ 无法导入”和“ 该视频不再可用”。

Android版本: Oreo(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等各种文件类型,但没有任何效果,我也遇到过各种类似的问题,但万一没有解决方案的视频。

请帮助我解决此问题,以及是否还有其他替代方法?

1 个答案:

答案 0 :(得分:2)

您可以将其添加到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>

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

在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);