【发布时间】:2013-09-07 08:26:20
【问题描述】:
我正在尝试分享一个正在创建并存储在外部 sdcard 上的视频,该视频的路径已被获取。
Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_MOVIES).getAbsolutePath()
我使用 SEND_INTENT 如下:
Intent shareIntent = new Intent(Intent.ACTION_SEND);
shareIntent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_WHEN_TASK_RESET);
shareIntent.setType("video/mp4");
shareIntent.putExtra(android.content.Intent.EXTRA_SUBJECT, "My Subject");
shareIntent.putExtra(android.content.Intent.EXTRA_TEXT,"My Text");
shareIntent.putExtra(Intent.EXTRA_STREAM, Uri.parse(video_path));
startActivityForResult(Intent.createChooser(shareIntent, "Share Your Video"),SHARE_INTENT);
问题: 当我通过 gmail 分享时,它会显示带有视频的撰写窗口。但是没有显示视频的大小,当您发送或取消窗口时,gmail 将在 contentresolver 上使用 inputstream NPE 崩溃。
如果是 youtube,它说您无法从云服务上传视频,我的视频显然驻留在设备上。
如果是 facebook,它会被默默地丢弃。这适用于 wassup。 :-)
任何想法如何让它工作?
编辑:
视频路径:
/storage/emulated/0/Movies/MyFolder/my-video_1378253389208.mp4
更新
通过添加file:/// 后缀,gmail 和 facebook 可以正常工作。
Youtube 还在讥讽“无法从云服务上传视频”。
【问题讨论】:
-
我怀疑
video_path的form 不正确。您可以记录它(对于任何视频文件)并将其作为评论发布吗? -
path 在我看来是正确的,因为它与 wassup 一起使用。在上面的问题中添加。
-
尝试在
video_path前加上"file://"。或者只是为了测试目的对路径进行硬编码:String video_path = "file:///storage/emulated/0/Movies/MyFolder/my-video_1378253389208.mp4"; -
您的解决方案使其适用于 gmail 和 facebook。只有 youtube 待定。谢谢!
-
我刚试过你的代码。
Youtube确实出现在选择器中。您可以尝试另一件事:创建文件 ==>File video_file = new File("/storage/emulated/0/Movies/MyFolder/my-video_1378253389208.mp4");。并使用Uri.fromFile(video_file)而不是Uri.parse(String)。
标签: android facebook video android-intent youtube