文件应用程序中的 Apple FileProvider 扩展从文档浏览器上下文菜单操作中删除复制、重复操作

Posted

技术标签:

【中文标题】文件应用程序中的 Apple FileProvider 扩展从文档浏览器上下文菜单操作中删除复制、重复操作【英文标题】:Apple FileProvider extention in File Application remove Copy, Duplicate operation from document browser's context menu action 【发布时间】:2018-02-14 09:09:44 【问题描述】:

我想从文档浏览器的上下文菜单操作中删除复制、复制操作 在我的FileProviderItem类代码中修改属性capabilities

class FileProviderItem: NSObject, NSFileProviderItem 

    var capabilities: NSFileProviderItemCapabilities 
        return allowsReading
    

通过使用上面的代码,我可以从文档浏览器的上下文菜单操作中删除移动、删除操作。

有没有办法从文档浏览器的上下文菜单操作中删除复制、复制操作?

【问题讨论】:

如果文件可以读取,则可以复制(并粘贴到其他位置)。禁用复制的唯一方法是禁用阅读(但这会破坏目的)。如果可以写入容器并且可以读取文件,则可以复制文件。禁用对容器的写入将禁用 Duplicate,但这可能不是您想要的。似乎没有其他方法可以控制这些操作 【参考方案1】:

只是为了也发布我在 cmets 中对您说的内容,此行为由文件提供程序扩展 UI 定义。将文件提供程序扩展添加到应用程序时,它会在您的应用程序目标中添加两个目标。如果您不想要这种类型的功能,那么只需从您的项目中删除文件提供程序扩展 UI 目标即可。

以下是 Apple 关于文件提供程序扩展 UI 的摘录:

使用文件提供程序 UI 扩展将自定义操作添加到您的文件 提供者扩展。如果用户长按 浏览文件提供商的内容时的项目。当用户 选择您的操作,系统会显示您的自定义用户界面, 用户完成操作的地方。用户完成后,您 必须明确取消或完成操作。

https://developer.apple.com/documentation/fileproviderui

【讨论】:

感谢@Asleepace,在我的项目中,我只想从上下文菜单中删除此复制和复制操作。如果我删除 FileProviderUI 目标,那么其余所有操作都将删除我不想要的 我对文件提供程序 UI 不太了解,但希望你的答案在那里,祝你好运! 从玩耍中我发现可以通过不允许对父文件夹进行写操作来删除“复制”操作。这是预期的,但不是最佳的 我还发现自定义操作在 Info.plist NSExtentionFileProviderActions 键中进行了描述,并且可以通过更改相应的谓词来禁用。也许复制和复制也可以这样改变?参考:developer.apple.com/documentation/fileproviderui/adding_actions

以上是关于文件应用程序中的 Apple FileProvider 扩展从文档浏览器上下文菜单操作中删除复制、重复操作的主要内容,如果未能解决你的问题,请参考以下文章

PendingIntent劫持导致app任意文件读写漏洞

无法访问 developer.apple.com 中的证书、标识符和配置文件

Android 7.0适配

文件应用程序中的 Apple FileProvider 扩展从文档浏览器上下文菜单操作中删除复制、重复操作

如何在 Swift 中将文件写入位于 Apple 文件应用程序的文件夹中

NavigationItem iOS 11 Apple 方式中的 UISearchController