【问题标题】:UIActivityViewController Error: Failed to determine whether URL is managed by a file providerUIActivityViewController 错误:无法确定 URL 是否由文件提供程序管理
【发布时间】:2018-11-05 08:16:20
【问题描述】:
我在我的应用程序中录制了一个视频并将其写入临时目录以允许用户通过 UIActivityViewController 共享它。视频可以在app内成功播放,通过UIActivityViewController可以成功通过Messages发送,分享到Facebook,保存到相册。但是当我尝试通过 WhatsApp 分享时,我收到以下错误:
Failed to determine whether URL /private/var/mobile/Containers/Data/Application/E7F57458-A5F9-44CB-86FA-ACC4309C7473/tmp/65CB72B3-373E-42F2-8A80-9888E00C2268.mp4 (n) is managed by a file provider
我无法找到有关此错误的更多信息。有谁知道为什么会发生这种情况?
【问题讨论】:
标签:
ios
swift
avfoundation
whatsapp
uiactivityviewcontroller
【解决方案1】:
找到了解决办法:
我正在打开一个 UIActivityViewController,其中包含视频 url 和一个字符串作为 activityItems。仅传递视频 url 解决了 WhatsApp 无法识别视频的问题。文字传不进去很烦人,但至少现在有视频了。
不起作用:
UIActivityViewController(activityItems: [url, "Check out my video!"], applicationActivities: nil)
有效:
UIActivityViewController(activityItems: [url], applicationActivities: nil)
【解决方案2】:
我有同样的错误。实际上会发生什么 - 每个应用程序运行的文件路径都不相同,但 我不记得为什么 我不仅保存文件名 - 还保存整个路径。当我尝试阅读它时是合理的——我什么也得不到。示例 - 如果我保存每个应用程序运行的文件:
/var/mobile/Containers/Data/Application/1265C296-F2B1-44D6-AD3D-6F2DD59557D3/Documents/what.jpeg
/var/mobile/Containers/Data/Application/B2B53592-B327-48E9-BF70-BE2826022271/Documents/what.jpeg
/var/mobile/Containers/Data/Application/2505B73F-27EF-4B5C-8D21-EB49A45ABE99/Documents/what.jpeg
正确做法-使用FileManager的文件夹路径,你可以找到更多信息here
+ (NSURL *)getDocumentsDirectoryPath {
return [[[NSFileManager defaultManager] URLsForDirectory:NSDocumentDirectory inDomains:NSUserDomainMask]lastObject];
}
【解决方案3】:
当我在模拟器上运行我的应用程序时,我遇到了同样的问题。但是,当我在真实设备上运行该应用程序时,它按预期工作。