2010-08-29 62 views
1

我有一个iPad应用程序,它具有通过UTI和CFBundleDocumentTypes声明的自定义文件类型。有没有办法阻止像Mail和Dropbox这样的应用程序显示文件预览,同时仍然允许“打开在...”选项启动我的应用程序?我已将UITypeConformsTo和UTTypeTagSpecification设置为应用程序Info-plist中的自定义值,但其他应用程序仍然使用由我的应用程序创建的自定义扩展预览文件。我认为预览的能力取决于UTTypeTagSpecification(即MIME类型)中的值,但显然不是。谢谢。防止在iPad上预览自定义UTI文件类型

回答

0

我发现的唯一解决方案是压缩文件(例如ZIP)。这将阻止iPad应用程序显示内容。在声明自定义文档类型时,您仍然需要小心。否则,即使应用程序被压缩,应用程序仍可能尝试预览,并最终显示乱码。

0

每个Quick Look生成器的Info.plist定义了它可以处理的UTI类型。

例如:/System/Library/QuickLook/Text.qlgenerator/Contents/Info.plist是系统中默认“文本”生成器的Info.plist路径。

生成器的另外两个文件夹是/ Library/QuickLook和〜/ Library/QuickLook。

你应该会看到类似这样的一些线在靠近顶部:

 <key>CFBundleTypeRole</key> 
     <string>QLGenerator</string> 
     <key>LSItemContentTypes</key> 
     <array> 
      <string>public.plain-text</string> 
      <string>public.rtf</string> 
      <string>com.apple.rtfd</string> 
      <string>org.oasis-open.opendocument.text</string> 
      <string>com.apple.property-list</string> 
      <string>public.xml</string> 
     </array> 

各种应用程序的Info.plist文件中定义的文件扩展名属于哪个类型UTI。操作系统将使用文件扩展名来获取UTI。

您的自定义UTI /文件扩展名可能与现有定义冲突。这听起来像是你描述的问题的一个可能原因。

我建议您查看默认值(以及您安装的程序的导出UTI类型),并确保您的自定义UTI(文件扩展名也是!)确实是100%唯一的。

不要让它继承任何东西,或者某些生成器可能会决定它尝试打开它。