使用“复制到”接收其他iOS应用程序中的文件

时间:2019-12-21 22:34:30

标签: ios sharing uiactivityviewcontroller uiapplicationdelegate uti

我希望我的应用程序从files.app应用程序接收.wav文件。我在Info.plist的Document Types数组中添加了com.microsoft.waveform-audio,我的应用程序在共享操作表中显示为“ Open In X”(不是Copy In)。我想实际复制文件,而不是在原地打开文件,并且操作系统不允许我复制这些文件(错误代码257)。我正在尝试将文件复制到UIApplicationLaunchOptionsURLKey路径中,但没有成功。

launchOptions字典在applicationDidLaunch WithOptions中也包含RequireOpenInPlace = 1。

如何让其他应用使用UIActivityViewController复制文件以进行挖掘?

1 个答案:

答案 0 :(得分:1)

如果要“就地”打开文件(而不是复制文件),则应使该进程可以访问url引用的资源。

在访问文件之前尝试调用url.startAccessingSecurityScopedResource()。然后,您应该可以复制文件了。

当您不再需要文件时,别忘了用url.stopAccessingSecurityScopedResource()平衡通话。

参考:https://developer.apple.com/documentation/foundation/nsurl#1663809

编辑: 另一个解决方案可能是在Info.plist中将LSSupportsOpeningDocumentsInPlace设置为NO。然后,您将始终在共享表中看到“复制到XYZ”,因此系统会将文件复制到应用程序沙箱中的“文档/收件箱”文件夹中。