无法使用 OpenIn 功能通过应用程序中的 webbrowser 打开 docx 文件

Posted

技术标签:

【中文标题】无法使用 OpenIn 功能通过应用程序中的 webbrowser 打开 docx 文件【英文标题】:Cannot open docx file through webbrowser in app using OpenIn functionality 【发布时间】:2012-06-12 11:21:57 【问题描述】:

我正在使用“OpenIn”功能并将文件从网络浏览器打开到我的应用程序中。所有文件类型都已注册并且工作正常。当尝试从网络浏览器打开 docx、pptx 或其他文件时,“打开方式”框没有显示我的应用程序名称。虽然我可以使用 UIDocumentInteractionController 在我的应用程序中查看 docx 或 pptx 文件。我不知道问题出在哪里,因为它工作得很好。

欢迎提出任何建议。 提前感谢您的帮助

【问题讨论】:

你用的是什么方法? presentPreviewAnimated 或 presentOpenInMenuFromRect: inView: animated: ? 参考developer.apple.com/library/ios/#qa/qa2008/qa1630.html - (BOOL)application:(UIApplication *)application openURL:(NSURL *)url sourceApplication:(NSString *)sourceApplication annotation:(id)annotation - (BOOL)application:(UIApplication *)application openURL:(NSURL *)url sourceApplication:(NSString *)sourceApplication annotation:(id)annotation and presentOpenInMenuFromBarButtonItem: animated: 以上两个我都用过职能。但是我遇到的问题是,当我在 Safari 浏览器中打开一个 docx 文件时,它会显示“OpenIn”按钮,但不会显示我的应用程序名称。但对于 doc 和其他文件,它会在“OpenIn”中显示我的应用名称。 【参考方案1】:

doc UTI:com.microsoft.word.doc

docx UTI:org.openxmlformats.wordprocessingml.document

ppt UTI:com.microsoft.powerpoint.ppt

pptx UTI:org.openxmlformats.presentationml.presentation

xls UTI:com.microsoft.excel.xls

xlsx UTI:org.openxmlformats.spreadsheetml.sheet

示例:

    <dict>
        <key>CFBundleTypeName</key>
        <string>Microsoft Word 2003 XML document</string>
        <key>CFBundleTypeRole</key>
        <string>Viewer</string>
        <key>LSHandlerRank</key>
        <string>Alternate</string>
        <key>LSItemContentTypes</key>
        <array>
            <string>org.openxmlformats.wordprocessingml.document</string>
        </array>
    </dict>

【讨论】:

【参考方案2】:

在您的应用程序的 info.plist 中,您应该添加类似于以下内容的内容,以允许您的应用程序打开,比如 PDF 文件,对吧?

只需将上面的替换为这个,

请注意,Document Content Type UTIs 已更改为 public.item,这是 ppt、doc 等 UTI 所遵循的。

因此现在,您应该能够获得 pdf、doc、docx、ppt、pptx、xls、xlsx 的“打开方式”选项。

【讨论】:

【参考方案3】:

UIWebView 不支持 MS Office 2007 及更高版本的文件格式,即 docx、pptx、xlsx,因为文件架构。

【讨论】:

它确实支持 MS Office 2007 文件格式。如果我在服务器端添加 docx 或 pptx 文件,然后将我的应用程序与服务器同步,它会向我显示 docx 文件。单击该文件时,它会显示在 Web 视图中。我面临的唯一问题是当我尝试打开文件表单网络浏览器(Safari)时,它显示“打开方式”按钮,但不显示我的应用程序名称 那是我的错。根据我上次的经验,我无法以 .docx 文件格式打开它,但是当我将其转换为 .doc 文件时,它就很好了。

以上是关于无法使用 OpenIn 功能通过应用程序中的 webbrowser 打开 docx 文件的主要内容,如果未能解决你的问题,请参考以下文章

R 背包功能

如何向自定义 UIWebview 添加“打开方式”功能?

Maven中的“找不到符号”错误

如何从 UI Xctest 调用 Appdelegate 的“OpenURL”功能

无法使用节点 js 访问桌面应用程序中的窗口关闭功能

ElasticBeanstalk 中的 ActionCable 失败并出现无法追踪的错误