findersync扩展运行时错误:由于无权查看该文件,因此无法打开文件



我正在编写一个将项目放置在上下文菜单中的FinderSync扩展程序。当我右键单击时,我希望菜单项的标题根据所选文件的内容更改。但是,当我尝试使用Data(contentsOf: selectedUrl)读取内容时,它会引发以下错误:

错误域= nscocoaerrordomain code = 257"文件"某些file.png"无法打开,因为您没有权限查看它。"userInfo = {nsfilepath =/user/shared/mySyncextension documents/soming file.png,nsunderlyingerror = 0x6180000004cf00 {error domain = nsposixorrordomain code = 1

如果我添加或删除沙盒,这不会更改。


先前的研究

  • 由于您没有许可查看该文件,因此无法打开该文件
    • 编译器始终设置为默认值
  • 在沙盒环境中读取并写入findersync扩展的访问
    • 启用了权利。另外,这表现出了沙箱的关闭。
  • "文件无法打开,因为您没有权限查看它。"|苹果官方支持社区
    • 文件的权限说"每个人"只读取"访问"

问题是沙箱阻止文件访问该文件,因此您的应用程序无法打开。

在沙盒环境中读取并写入findersync扩展的访问

即使Finder Sync应用程序扩展名被授予"用户选择的文件"沙盒文件访问,但通过右键单击的用户访问的文件似乎不算为"用户选择"。

可能可以通过PowerBox通过NSOPENPANEL来指导用户通过PowerBox选择一个根目录,然后可以通过安全性的书签访问所有子目录。

使用临时例外权利也可能是可能的,但会引起应用程序审查问题:

有什么方法可以给我的沙盒Mac应用程序读取仅在〜/library中访问文件?

请复制我的苹果错误报告,要求此行为:

查找器同步应用扩展selectedItemURLs()应接收"用户选择的文件"沙盒文件访问。

rdar://42874694
https://openradar.appspot.com/radar?id=5063363058991104

相关内容

最新更新