Example: /MacCF/Sandbox File Access/Sandbox Files

Online Documentation   -   Statistics   -   FAQ   -   Plugin Parts (All, Dependencies)   -   Class hierarchy

New in Version 22.2 22.3 22.4 22.5 23.0 23.1 23.2 23.3 23.4 23.5 24.0 24.1

The list of the   topics,   classes,   interfaces,   controls,   modules,   global methods by category,   global methods by name,   screenshots,   licenses   and   examples.

Platforms to show: All Mac Windows Linux Cross-Platform

/MacCF/Sandbox File Access/Sandbox Files


Required plugins for this example: MBS MacCF Plugin

You find this example project in your Plugins Download as a Xojo project file within the examples folder: /MacCF/Sandbox File Access/Sandbox Files

This example is the version from Tue, 11th Jul 2016.

Project "Sandbox Files.xojo_binary_project"
Class App Inherits Application
Const kEditClear = "&Delete"
Const kFileQuit = "&Quit"
Const kFileQuitShortcut = ""
End Class
Class MainWindow Inherits Window
Control List Inherits Listbox
ControlInstance List Inherits Listbox
End Control
EventHandler Sub Open() app.AutoQuit = true // let's see where documents folder is dim docFolder as FolderItem = SpecialFolder.Documents #if RBVersion < 2013 dim docPath as string = docFolder.UnixpathMBS #else dim docPath as string = docFolder.NativePath #endif List.AddRow "Document folder: "+docPath if docPath.instr("/Containers/") = 0 then MsgBox "Please sandbox this app." // run command in command.txt file. // you need to put your developer name in the command.txt file end if // now our pref file dim datafile as FolderItem = docFolder.Child("bookmark.pref") if datafile.Exists and datafile.Length>0 then List.AddRow "Second run." // read bookmark dim b as BinaryStream = BinaryStream.Open(datafile) dim BookmarkData as string = b.Read(b.Length) // resolve bookmark dim relativeURL as CFURLMBS = nil dim isStale as Boolean = false dim options as integer = CFBookmarkMBS.kResolutionWithoutUIMask + CFBookmarkMBS.kResolutionWithSecurityScope dim url as CFURLMBS = CFBookmarkMBS.ResolveBookmarkDataToCFURLMBS(BookmarkData, options, relativeURL, isStale) dim error as CFErrorMBS = CFBookmarkMBS.LastError if error<>nil then List.AddRow "Error: "+error.Description end if // got something? if url<>Nil then dim UrlString as string = url.str.str list.AddRow "URL: "+UrlString // start access if CFBookmarkMBS.StartAccessingSecurityScopedResource(url) then List.AddRow "StartAccessingSecurityScopedResource success." dim file as FolderItem = url.file #if RBVersion < 2013 dim filePath as string = file.UnixpathMBS #else dim filePath as string = file.NativePath #endif List.AddRow "File: "+filePath // now read file b = BinaryStream.Open(file) dim data as string = b.Read(b.Length) List.AddRow "Data read: "+str(lenb(data)) // stop access CFBookmarkMBS.StopAccessingSecurityScopedResource url List.AddRow "Success." else List.AddRow "StartAccessingSecurityScopedResource failed." end if else List.AddRow "failed to get URL from stored bookmark." end if else List.AddRow "Please select a file..." // pick a file dim f as FolderItem = GetOpenFolderItem("") if f = nil then Return list.AddRow "URL: "+f.URLPath // open file and see if we can read it dim b as BinaryStream = BinaryStream.Open(f) dim data as string = b.Read(b.Length) List.AddRow "Data read: "+str(lenb(data)) // create bookmark data dim options as integer = CFBookmarkMBS.kCreationWithSecurityScope dim bookmarkData as string bookmarkData = CFBookmarkMBS.CreateBookmarkData(f, options) dim error as CFErrorMBS = CFBookmarkMBS.LastError if error<>nil then List.AddRow "Error: "+error.Description end if if lenb(bookmarkData) = 0 then // failed? Maybe not sandboxed... List.AddRow "Failed to create bookmark." Return end if // now write to data file b = BinaryStream.Create(datafile, true) b.Write bookmarkData b.Close List.AddRow "Saved bookmark. Please relaunch app." end if Exception io as IOException List.AddRow "IOException: "+str(io.errorNumber)+" "+io.message End EventHandler
End Class
MenuBar MainMenuBar
MenuItem FileMenu = "&File"
MenuItem FileQuit = "#App.kFileQuit"
MenuItem EditMenu = "&Edit"
MenuItem EditUndo = "&Undo"
MenuItem EditSeparator1 = "-"
MenuItem EditCut = "Cu&t"
MenuItem EditCopy = "&Copy"
MenuItem EditPaste = "&Paste"
MenuItem EditClear = "#App.kEditClear"
MenuItem EditSeparator2 = "-"
MenuItem EditSelectAll = "Select &All"
End MenuBar
MyFileTypes
Filetype text/plain
End MyFileTypes
End Project

The items on this page are in the following plugins: MBS MacCF Plugin.


💬 Ask a question or report a problem