- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
场景
用户在Finder中右键单击目录,然后找到自定义MenuItem。单击该项目将告诉我的应用打开一个窗口,用户可以在其中执行其工作。完成后,需要通过右键单击将文件写入他选择的文件夹。
问题
我现在所有的东西都可以工作,但是最后一部分。该扩展名无法写入所选的文件夹。
选择要与之交互的文件夹的用户似乎不是Powerbox的一部分(据我所知,Powerbox仅通过openPanel
和savePanel
激活)。如何获得与用户通过菜单项选择的文件夹进行交互的权限?我在开发人员库中找不到对该问题的任何可能解决方案的引用。不在沙盒指南中,不在扩展指南中。
如果无法使用选定的文件和文件夹,那么添加自定义菜单项的可能性将非常无用,因此,我确定必须有一种访问它们的方法。
也许我尝试写的方式是错误的。我的主应用程序将一个临时文件写入共享组文件夹。之后,它会发送一条通知,通知该扩展程序监听:
func copyFile(notification:NSNotification)
{
NSLog("write file")
if let target = tmpTarget
{
let secureContainer = NSFileManager.defaultManager().containerURLForSecurityApplicationGroupIdentifier("group.de.enie.Nu")
let contents = NSFileManager.defaultManager().contentsOfDirectoryAtURL(secureContainer!, includingPropertiesForKeys: nil, options: NSDirectoryEnumerationOptions.SkipsHiddenFiles | NSDirectoryEnumerationOptions.SkipsPackageDescendants | NSDirectoryEnumerationOptions.SkipsSubdirectoryDescendants , error: nil)
for content in contents as! [NSURL]
{
NSLog("tmp data: \(content.path!)")
if content.lastPathComponent!.stringByDeletingPathExtension == "SharedData"
{
NSLog("found shared file")
NSFileManager.defaultManager().copyItemAtURL(content, toURL: target.URLByAppendingPathComponent(content.lastPathComponent!), error: nil)
NSFileManager.defaultManager().removeItemAtURL(content, error: nil)
}
}
tmpTarget = nil
}
}
尝试写入文件会导致以下控制台通知:
NSOpenPanel
访问文件夹(这意味着权利应该是正确的),但我无法在/甚至无法将默认
FIFinderSyncController
的目标URL标记为书签。
最佳答案
即使Finder Sync App Extension被授予“用户选择的文件”沙箱文件访问权限,用户通过Finder Sync App Extension右键单击访问的selectedItemURLs()
文件似乎也不算是“用户选择的”。因此,沙箱会拒绝您的Finder Sync应用访问这些文件。
正如其他答案所指出的那样,解决此问题的唯一方法是使用临时授权来进行更广泛的文件访问。或使用Powerbox NSOpenPanel
让用户选择一个包含文件夹,然后使用该安全作用域书签来访问沙盒文件。
请复制我的Apple错误报告,要求允许此行为:
Finder Sync App Extension
selectedItemURLs()
should receive "User Selected File" Sandbox file access.rdar://42874694
https://openradar.appspot.com/radar?id=5063363058991104
关于macos - 在沙盒环境中对FinderSync扩展的读写访问权限,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30276155/
我有一个显示文件状态的 Finder 同步扩展 (FSE)。有没有办法可以强制 FSE 再次请求 Finder 窗口中当前可见的所有文件/文件夹的状态。 最佳答案 Finder 同步扩展 (FSE)
每次 FinderSync 扩展启动时,我都会遇到此崩溃: Process: My Finder Sync [8364] Path: /A
我正在根据以下文档开发 FinderSync 扩展: https://developer.apple.com/library/ios/documentation/General/Conceptual/
我在这里遇到了一个非常奇怪的问题:我正在编写一个 FinderSync 扩展,更具体地说,我正在向上下文菜单添加元素。现在,如果我将所有内容打包到一个类中,它运行良好: 1) 我有主要的扩展类,叫做
我正在开发一个 FinderSync 扩展,我在检查选择是否正在选择或选择/取消选择扩展时遇到了一些问题。 有没有办法以编程方式检查是否在 System Preferences->Extensions
我有一个实现 FinderSync 应用程序扩展的应用程序。问题是,在客户计算机上,FinderSync 似乎仅在 Finder 重新启动之后安装,而不是之前。客户有 osx El Capitan(1
我正在实现 Finder Sync扩展,并且在我的 FIFinderSync 实现中遇到了一些奇怪的问题。 回调beginObservingDirectoryAtURL 并不总是被调用。通常,当它不被
我创建了一个 FinderSync 扩展,当我运行扩展目标时,控制台和断点没有执行任何操作,那么如何在 xcode 中调试扩展?我是 MacOS 的新开发者。 最佳答案 这对我有用...... 创建一
我创建了一个 FinderSync 扩展,当我运行扩展目标时,控制台和断点没有执行任何操作,那么如何在 xcode 中调试扩展?我是 MacOS 的新开发者。 最佳答案 这对我有用...... 创建一
我正在开发一个必须为 FinderSync 应用程序扩展提供支持的 mac 应用程序。一切正常,除了一些边栏和工具栏图标问题。 有没有办法在没有用户干预的情况下以编程方式添加工具栏和侧边栏图标?从文档
我正在使用 FinderSync 扩展模板。 Info.plist 当我运行扩展目标时,控制台中的输出为零。代码似乎没有运行。 running the extension 最佳答案 我发现从 Xcod
我编写了一个实现 FinderSync 扩展的应用程序。 一切正常,我可以通过 DistributedNotificationCenter 从扩展到主应用程序发送通知来“交流”。但显然,如果主应用程序
我已经测试了 Xcode 中提供的用于制作 FinderSync 扩展的模板。除了两件事,一切都很好: a) 当文件夹被监控时,系统永远不会调用 requestBadgeIdentifierForUR
我正在尝试为 Swift/Cocoa 中的 Finder Sync 扩展创建级联子菜单。我有以下代码: override func menuForMenuKind(menuKind: FIMenuKi
我正在将 FinderSync Extension 集成到我的 Cocoa 应用程序中以在文件和文件夹中显示徽章。看看下面的两个场景: 当我使用 FinderSync Extension(如 Demo
我正在创建一个简单的 OS X FinderSync为所有文件添加一个菜单项到控制/右键菜单: [FIFinderSyncController defaultController].directory
我正在编写一个 FinderSync 扩展,将一个项目放在上下文菜单中。右键单击时,我希望菜单项的标题根据所选文件的内容进行更改。但是,当我尝试使用 Data(contentsOf: selected
我是一名优秀的程序员,十分优秀!