以编程方式检索支持给定文件类型的已安装应用程序列表

Rea*_*lly 5 iphone protocol-handler ipad ios uidocumentinteraction

虽然很明显我们无法在iOS上检索已安装的应用程序列表,但是有什么技巧可以让我们确定为给定文件类型注册的应用程序列表吗?也就是说,用户将在Open In ...菜单中看到该特定文件类型的列表.canOpenURL只返回一个布尔值,但理想情况下它会返回一个受支持的已安装应用程序列表.有任何想法吗?

UPT*_*UPT 6

在开放当然是可能由UIDocumentInteractionController您只需要实例UIDocumentInteractionController实例:

//Following in header file:
UIDocumentInteractionController *docInteractionController;
Run Code Online (Sandbox Code Playgroud)

实现委托:

<UIDocumentInteractionControllerDelegate>
Run Code Online (Sandbox Code Playgroud)

.M:

//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;
Run Code Online (Sandbox Code Playgroud)

Open In方法如下:

- (void) openIn: (id) sender {
    [self.docInteractionController presentOptionsMenuFromBarButtonItem:sender animated:YES];
}
Run Code Online (Sandbox Code Playgroud)

一旦你完成了:

[self.docInteractionController dismissMenuAnimated:YES];
Run Code Online (Sandbox Code Playgroud)

就是这样.这将列出文档支持的应用程序列表,并且选择它们将使用我们实例化的文档URL启动相应的应用程序.


Mic*_*ann 2

我怀疑您的两个问题中的任何一个(“确定给定文件类型的应用程序列表”或“如何实现‘打开方式...’”)在当前版本的 iOS 中是否可能,因为用户在 iOS 上看不到单个文件显示应用程序的主屏幕。应用程序也不能执行“使用此特定文件打开单独的应用程序”事件(这在 Macintosh 上使用 Apple Events 可以轻松完成)。

但这些听起来确实是一个很棒的功能请求,您可以通过http://bugreporter.apple.com向 Apple 提交(如果您是注册的 Apple 开发人员,则可以登录)。如果有足够多的人要求这些功能(并且潜在的“open in...”功能确实是一个经常要求的功能),Apple 将强烈考虑将它们包含在未来的 iOS 版本中。

  • 也没有 API 可以获取哪些应用程序响应哪些文件的列表(或数组)。我们的愿望清单的另一件事。 (2认同)