我已实现以下代码来分享视频:
// Copy video file to Fileprovider directory.
final String destFile = …
// Build FileProvider uri.
final Uri uri = FileProvider.getUriForFile(activity, AUTHORITY, destFile)
Intent sendIntent = new Intent();
sendIntent.setAction(Intent.ACTION_SEND);
sendIntent.putExtra(Intent.EXTRA_STREAM, uri);
sendIntent.addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION);
sendIntent.setType("video/*");
Log.d(TAG, "Sharing " + sendIntent.getType() + " for " + uri);
String title = "Share this content with";
Intent chooser = Intent.createChooser(sendIntent, title);
if (null != sendIntent.resolveActivity(activity.getPackageManager())) {
activity.startActivity(chooser);
}
此代码可用并显示选择器。当我选择像Telegram这样的消息传递应用程序时,我会选择目标对话,但视频会作为文件附件发送,这意味着用户只能看到文档图标并需要下载并在外部打开。但是,使用操作系统系统库的同一视频会将Telegram打开到他们的视频编辑器中,他们可以在其中剪切/编辑媒体,并且在发送时将在对话中内嵌显示。
我错过了什么来获得相同的行为?浏览Android git存储库我没有看到任何与此不同的东西来分享内容,所以我不知道我错过了什么。我使用此代码获得的日志类似于
Sharing video/* for content://com.app.android.fileprovider/share/video-a.mp4
因此它不仅具有mime类型,而且文件扩展名也可以提供帮助。当我更改代码以使用不同的mime类型的图像时,我得到相同的行为,其中图像被内联到Telegram的聊天。
答案 0 :(得分:0)
由于某些原因,罪魁祸首是FileProvider
。删除FileProvider
并直接传入file://
URI后,一切正常。