2013-03-01 68 views
0

OK文件,所以我知道,根據新的沙盒準則,打開文件必須按照一定的規則遵守(又名打開動作必須通過使用NSOpenPanel用戶觸發,當然必要的給定「打開」權限)。打開使用沙盒

然而,這裏的漁獲:

  • 在我的申請,我有一個NSOutlineView在一個完整的文件管理器(完整的樹形結構)
  • 用戶應該是能夠從大綱視圖中選擇一個文件,然後應用程序將打開它。

我該怎麼做,因爲應用程序應該100%符合沙箱?有沒有已知的解決方法?它甚至有可能嗎?

任何想法?

回答

0

簡答:你不能那樣做。爲了顯示應用程序界面中的文件夾內容,首先必須讓用戶使用打開的面板或從Finder中拖動它來打開它。

+0

哦,太好了......我真的很喜歡沙盒......:S – 2013-03-01 10:32:34

0

您可以這樣做,正如@omz所說,您的應用程序需要請求訪問包含應用程序顯示的所有文件/文件夾的文件夾的權限。您不需要單個文件的許可,但可以將整個目錄結構作爲單一權限獲取,然後將其作爲安全範圍書籤存儲,以便將來執行的應用程序已具有該權限。

您甚至可以在應用程序啓動時詢問用戶是否有權訪問整個硬盤驅動器或其整個用戶目錄。

您可以使用我編寫的這個類將所有這些內容包裝到一個函數調用中,然後這個函數會保留權限,以便只在第一次運行時纔會詢問它們。 https://github.com/leighmcculloch/AppSandboxFileAccess

或者,如果你想用NSOpenPanel手動完成它,只需看看AppSandboxFileAccess中的代碼,因爲它使用它來獲取權限,然後保留這些權限。