启用AppSand框时如何从USB大容量存储设备读取

时间:2016-01-27 16:09:18

标签: objective-c cocoa sandbox appstore-sandbox

在我的应用中,当用户连接USB设备(手机)时,我使用NSWorkspaceDidMountNotification通过执行NSAlert通知用户设备已被检测到。

如果接受,app继续从设备复制(读取)文本文件内容。这工作正常,直到我启用AppSandbox。 我已启用usb授权,但现在当应用程序尝试复制时,我收到以下错误。

  

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

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

1 个答案:

答案 0 :(得分:2)

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

  

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

App Sandbox Design Guide

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

远程相关的SO帖子: