UIActivityViewController错误:无法确定URL是否由文件提供程序管理

时间:2018-05-25 22:20:16

标签: ios swift avfoundation whatsapp uiactivityviewcontroller

我在我的应用程序中录制视频并将其写入临时目录,以允许用户通过UIActivityViewController共享它。视频可以在应用程序中成功播放,通过UIActivityViewController可以成功通过消息发送,共享到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

我无法找到有关此错误的更多信息。有谁知道为什么会这样?

3 个答案:

答案 0 :(得分:1)

找到了解决方法:

我正在打开一个UIActivityViewController,其视频网址和一个字符串为activityItems。仅传递视频网址可解决WhatsApp无法识别视频的问题。无法传递文本很烦人,但是至少现在有视频了。

不起作用:

UIActivityViewController(activityItems: [url, "Check out my video!"], applicationActivities: nil)

可以工作:

UIActivityViewController(activityItems: [url], applicationActivities: nil)

答案 1 :(得分:0)

我有同样的错误。实际上发生了什么-每个应用程序运行文件的路径都不相同,但是我不记得为什么,我不仅保存文件名-而是保存整个路径。尝试阅读时很合理-我什么也不会得到。示例-如果我在每次运行应用时都保存文件:

/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];
}

答案 2 :(得分:0)

我在模拟器上运行应用程序时遇到了同样的问题。但是,当我在真实设备上运行该应用程序时,它按预期运行。