首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >macOS的颤振:如何访问“用户选择的”桌面文件和文件夹

macOS的颤振:如何访问“用户选择的”桌面文件和文件夹
EN

Stack Overflow用户
提问于 2021-06-24 10:46:36
回答 1查看 1.7K关注 0票数 2

我的圈套

  • macOS大Sur
  • Xcode 12.5.1

使用macOS沙箱,我启用了对

  • 用户选择文件
  • 下载文件夹
  • 图片文件夹
  • 音乐文件夹
  • 电影文件夹

都具有读/写权限。

但是,当我使用正式的file_selectorpath_provider时。我仍然不能引用下载/音乐/电影/图片之外的任何文件和文件夹。

我总能得到

代码语言:javascript
运行
复制
OS Error: Operation not permitted, errno = 1

每当我试图访问上述目录之外的目录时。

期望值

我希望通过授予User selected file权限,我应该能够允许file_selector访问比如说用户文档/桌面文件夹。否则,如果用户需要那些预定义文件夹的单独权限,它怎么可能有“选定的”文件?

我从本机开发人员的文章中看到,需要调用本机函数NSOpenPanel

有人能告诉我怎么做吗?是颤振不支持这种用户选择的文件功能吗?

我应该求助于平台方法频道吗?这听起来有点疯狂。

EN

回答 1

Stack Overflow用户

发布于 2021-06-25 02:33:01

我是根据其他答案自己解决的。要旨

  • App拳击将禁止应用程序访问沙箱之外的文件/文件夹,但这些用户文件夹除外:Downloads/Movies/Music/Pictures。例如,您将无法通过使用
代码语言:javascript
运行
复制
path.join(path_provider.getApplicationDocumentsDirectory(), '..');

这只会让你

代码语言:javascript
运行
复制
OS Error: Operation not permitted, errno = 1
  • 在沙箱模式下,只能访问有限的位置,这些位置必须在Xcode项目中配置,要么通过Xcode GUI配置,要么直接配置到权限文件上。
  • 对于内部工具或开发目的,禁用沙箱就足够了。禁用它的方法有:
代码语言:javascript
运行
复制
- Within Xcode project `Signing & Capabilities` panel, click the "X" button at the right end of the `App Sandbox` category.
- Editing the plist files `DebugProfile.entitlements` and `Release.entitlements` by setting the field
代码语言:javascript
运行
复制
<key>com.apple.security.app-sandbox</key>
<false/>

在此之后,file_selector API将能够访问应用程序沙箱之外的文件。

票数 6
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/68114273

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档