为 ActivityViewController 提供的未知活动项

Posted

技术标签:

【中文标题】为 ActivityViewController 提供的未知活动项【英文标题】:Unknown activity items supplied for ActivityViewController 【发布时间】:2015-01-22 12:49:30 【问题描述】:

我正在尝试使用 UIActivityViewController 从我的应用中分享视频。以下是我使用的代码:

var url = NSURL(string: path!)!
var activityViewController = UIActivityViewController(activityItems: [url], applicationActivities: nil)

self.presentViewController(activityViewController, animated: true, completion:  () -> Void in )

路径指向一个有效的 .mov 文件,所以那里没有问题。当我展示活动视图控制器时,我收到错误:Unknown activity items provided 带有 .mov 文件的路径,并且共享选项仅显示 AirDrop。

该应用在 ios 8 上运行。

有什么想法吗?

编辑我发现当我将视频保存到相机胶卷时。用户可以将其与照片应用程序共享到任何应用程序。所以我猜视频格式没有问题。

【问题讨论】:

你能显示错误信息吗? 2015-01-25 13:39:25.548 myApp[8850:1366084] 提供的未知活动项目:(“/private/var/mobile/Containers/Data/Application/97D53B7E-4F17-4CE3- 9D6D-2D81E36D8292/tmp/54c3b52eb86dccf971c01d72.mov") 【参考方案1】:

如果影片在资源包中,您应该使用init?(fileURLWithPath path: String, isDirectory isDir: Bool)

如果你使用imagePicker控制器选择视频,你可以使用UIImagePickerControllerMediaURL键从信息字典中获取url,对应的委托方法是didFinishPickingMediaWithInfo

【讨论】:

我没有使用图像选择器,因为我正在将视频从互联网下载到应用程序文档目录中。 抱歉,我无法完全理解您的建议。 mov 不在资源包中,它在文档目录中。另外我不想使用 ImagePicker 让用户选择视频,因为视频已经在屏幕上播放。你能详细说明一下吗? 我理解您的担忧,我的意思是将您的代码var url = NSURL(string: path!)! 更改为var url = NSURL(fileURLWithPath: path!),我刚刚做了一个对我有用的测试。 哇,好用!我尝试了不同的应用程序,但它不适用于 Viber,但这不是问题 :-) 您是如何将电影保存到临时文件夹的?【参考方案2】:

试试这个:

var activityViewController = UIActivityViewController(activityItems: [path], applicationActivities: nil)
self.presentViewController(activityViewController, animated: true, completion:  () -> Void in )

【讨论】:

选项与此一起出现,但这会将路径视为字符串并仅共享文件的路径。【参考方案3】:

我在 zip 文件中遇到了类似的问题,并意识到我传递的 url 路径是相对路径,而不是绝对路径。换句话说,UIActivityViewController url 需要前缀 file:///

我使用的是相对路径,因为第三方库 Objective-Zip 需要相对路径来创建 zip 文件。

作品: file:///private/var/mobile/Containers/Data/Application/63284C22-6E22-4865-965C-3B67F58D0659/tmp/myfile.zip

不起作用: /private/var/mobile/Containers/Data/Application/63284C22-6E22-4865-965C-3B67F58D0659/tmp/myfile.zip

【讨论】:

以上是关于为 ActivityViewController 提供的未知活动项的主要内容,如果未能解决你的问题,请参考以下文章

在 activityViewController 中更改 barTintColor

Swift 取消 ActivityViewController 会导致致命错误

为啥 ActivityViewController 在控制台中显示自动约束错误?

UIActivity activityViewController 没有在 iPad 上关闭

UIActivity 自定义 activityViewController 在 iPad 上崩溃

ActivityViewController 无法在 WhatsApp 和 Mail App 上共享链接?