我想显示沙盒应用程序内粘贴板中包含的文件的预览。我可以使用 QuickLookThumbnailing 包来完成此操作。
不幸的是,这需要读取权限,并且不适用于不在基本文件夹内的文件,例如下载、视频、照片和音乐。 对于其他情况,我会收到错误
couldn't issue sandbox extension com.apple.app-sandbox.read for '<path to file>'
我理解在沙箱设计中,文件的访问应该以某种方式得到用户的批准。 但在其他应用程序(也是沙盒)中,我可以粘贴文件而不会提示进行任何确认。
他们是怎么做到的?
Finder 绝不会在粘贴板内提供安全范围的书签。
您不会获得安全范围的书签,而是获得已授予读/写权限的路径/URL。然后,您创建一个安全范围的书签并将其存储以供后续访问。这适用于一般粘贴板(复制粘贴)以及拖动剪贴板。
对于沙箱环境,当从粘贴板读取时,您可以暂时访问该文件。但你只有一次机会。也就是说,您不能多次调用pasteboard.readObjects或其他api。
您可以将代码粘贴到此处并提供更多信息。