【问题标题】:How to read from usb mass storage device when AppSand box is enabled启用 AppSand 盒时如何从 USB 大容量存储设备读取
【发布时间】:2016-01-27 16:09:18
【问题描述】:

在我的应用程序中,当用户连接 USB 设备(电话)时,我使用NSWorkspaceDidMountNotification 通知用户通过执行NSAlert 检测到设备。

如果接受,应用程序继续从设备复制(读取)文本文件内容。在我启用 AppSandbox 之前,这一直很好。 我已启用 USB 授权,但现在当应用程序尝试复制时,我收到以下错误。

错误读取文件内容:错误域=NSCocoaErrorDomain 代码=257“无法打开文件“Office.txt”,因为您无权查看它。” UserInfo={NSFilePath=/Volumes/OfficeDrive//documents/Office.txt, NSUnderlyingError=0x600000049390 {Error Domain=NSPOSIXErrorDomain Code=1 "Operation not allowed"}}

如果启用 AppSandbox,是否可以从 USB 设备读取数据。

【问题讨论】:

    标签: objective-c cocoa sandbox appstore-sandbox


    【解决方案1】:

    如果您被沙盒化,您只能访问用户明确授予访问权限的文件:

    用户指定的文件。当用户明确打开这些文件或将这些文件拖放到应用程序上时,沙盒应用程序(具有适当的权利)会自动获得对任意位置文件的访问权限。

    (App Sandbox Design Guide)

    因此,您必须打开一个文件对话框(可能已经指向您从通知中找到的位置)并让用户选择它才能获得访问权限。

    远程相关的 SO 帖子:

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-09-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多