虽然很明显我们无法在 iOS 上检索已安装应用程序的列表,但是否有任何技巧可以让我们确定为给定文件类型注册的应用程序列表?也就是说,用户将在“打开方式...”菜单中看到该特定文件类型的列表。canOpenURL 只返回一个布尔值,但理想情况下它会返回一个受支持的已安装应用程序列表。
3 回答
UIDocumentInteractionController
您只需要实例化 UIDocumentInteractionController 实例当然可以打开:
//Following in header file:
UIDocumentInteractionController *docInteractionController;
实现委托:
<UIDocumentInteractionControllerDelegate>
米:
//Here the url is the document URL that you want to open (or you want to apply open in functionality)
self.docInteractionController = [UIDocumentInteractionController interactionControllerWithURL:url];
self.docInteractionController.delegate = self;
Open In 方法如下:
- (void) openIn: (id) sender {
[self.docInteractionController presentOptionsMenuFromBarButtonItem:sender animated:YES];
}
完成后:
[self.docInteractionController dismissMenuAnimated:YES];
就是这样。这将列出文档支持的应用程序列表,并在选择它们时使用我们实例化的文档 URL 启动相应的应用程序。
我怀疑您的两个问题中的任何一个(“确定给定文件类型的应用程序列表”或“如何实现'在...中打开'”)在当前版本的 iOS 中是可能的,因为用户在显示应用程序的主屏幕。应用程序也不能执行“使用此特定文件打开单独的应用程序”事件(这在带有 Apple 事件的 Macintosh 上很容易做到)。
但是这些听起来确实像是一个很棒的功能请求,您可以在http://bugreporter.apple.com上向 Apple 提交(如果您是注册的 Apple 开发人员,您可以登录)。如果有足够多的人要求这些功能(并且潜在的“在...中打开”功能确实是一个经常要求的功能),Apple 将强烈考虑将它们包含在未来的 iOS 版本中。
你可以看到这个示例程序。它可能会帮助你。它使用了 UIDocumentaInteractionController 类实例及其属性 UTI(唯一类型标识符)。它有助于检索手机上已安装的应用程序列表,这些应用程序支持您在应用程序中打开的文件类型。您可能需要根据您的方便稍微重写 UTI 属性
http://developer.apple.com/library/ios/#samplecode/DocInteraction/Introduction/Intro.html