我需要在Finder应用程序中为自定义文件类型添加上下文菜单项。所以我用Apple Automator创建了一个服务。当我在NSSendFileTypes上下文菜单项中指定public.data时,它通常显示在所有类型的文件上,但当我使用应用程序info.plist中指定的UTI时,它不适用于定义的自定义文件类型。有人能帮助我们提示是否可以对Finder上下文菜单项服务使用自定义UTI过滤吗?如果可以,我做错了什么,或者可能有任何"诀窍"?
这是我的服务工作流文件的info.plist文件。
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>NSServices</key>
<array>
<dict>
<key>NSMenuItem</key>
<dict>
<key>default</key>
<string>MyService</string>
</dict>
<key>NSMessage</key>
<string>runWorkflowAsService</string>
<key>NSRequiredContext</key>
<dict>
<key>NSApplicationIdentifier</key>
<string>com.apple.finder</string>
</dict>
<key>NSSendFileTypes</key>
<array>
<string>com.myapp.anytype</string>
</array>
</dict>
</array>
</dict>
</plist>
这是我的应用程序info.plist.中的UTI声明代码
<key>UTExportedTypeDeclarations</key>
<array>
<dict>
<key>UTTypeConformsTo</key>
<array>
<string>public.archive</string>
</array>
<key>UTTypeDescription</key>
<string>Any type file format</string>
<key>UTTypeIdentifier</key>
<string>com.myapp.anytype</string>
<key>UTTypeReferenceURL</key>
<string>http://myapp.com</string>
<key>UTTypeTagSpecification</key>
<dict>
<key>public.filename-extension</key>
<array>
<string>anytype</string>
</array>
</dict>
</dict>
</array>
我可以在该类型文件的建议应用程序列表中看到我的应用程序,所以我认为声明是正确的。
想分享我做错了什么。我从应用程序导出的文件格式在系统UTI列表中,因此无法导出该格式的UTI定义。我只是使用了系统中声明的那个。感谢选民!