为 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 上关闭