android - 如何使用 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,但没有任何效果,我也遇到了各种类似的问题,但在视频的情况下没有解决方案。
请帮助我解决这个问题,以及是否有其他方法可以这样做?
解决方案
您可以将此添加到您的 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);
推荐阅读
- mapbox - Mapbox 和 OpenStreetMap 数据刷新 - Mapbox 显示 OpenStreetMap OSM 中所做的更改需要多长时间?
- html - 增加 nav 和 li
- excel - 日期和时间功能
- python-3.x - 函数多、文件类型不同时出现“UnboundLocalError”如何解决?
- netsuite - 如何在 RESTlet 中加载和编辑客户资料?
- amazon-web-services - AWS 死信队列与 Slack 集成
- arrays - 如何从 Ruby 中的数组创建多维数组?
- python-3.x - 我在这个 python 2.7 示例中缺少什么在 3.8 中尝试
- flutter - Flutter:如何使用 onTap 或 onPressed 滚动页面
- node.js - 使用 Moment.js 将字符串转换为日期,返回无效日期