为什么ACTION_SEND的行为不像画廊的分享按钮?

时间:2017-09-11 12:56:07

标签: android video android-sharing

我已实现以下代码来分享视频:

// 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的聊天。

1 个答案:

答案 0 :(得分:0)

由于某些原因,罪魁祸首是FileProvider。删除FileProvider并直接传入file:// URI后,一切正常。