好的,我知道在新的SandBox准则下,打开文件必须遵守某些规则(a.k.a )。打开操作必须由用户使用NSOpenPanel触发,当然,给出了必要的“打开”权限)。
然而,的问题是:
NSOutlineView,其中包含一个完整的文件管理器(完整的树结构)考虑到应用程序应该是100%的沙箱兼容,我该怎么做呢?有没有已知的解决办法?有可能吗?
有什么想法吗?
发布于 2013-03-01 10:27:42
简短的回答:你不能那么做。为了显示应用程序UI中文件夹的内容,首先必须让用户使用打开的面板或从Finder中拖动它。
发布于 2013-11-23 15:01:29
您可以这样做,正如@omz所说,您的应用程序需要请求访问包含应用程序显示的所有文件/文件夹的文件夹的权限。您不需要对单个文件的权限,但可以将整个目录结构作为单个权限来获取,然后将其存储为安全范围内的书签,这样以后对应用程序的执行就已经具有了该权限。
您甚至可以在app启动时询问用户访问整个硬盘驱动器或他们的整个用户目录的权限。
您可以使用我编写的这个类将所有这些封装到一个函数调用中,然后函数调用将持久化权限,因此只在第一次运行时才会询问它们。https://github.com/leighmcculloch/AppSandboxFileAccess
或者,如果您想手动使用NSOpenPanel,只需查看AppSandboxFileAccess中的代码,因为它使用它获得权限,然后持久化这些权限。
https://stackoverflow.com/questions/15155371
复制相似问题