使用默认应用程序iOS从本地文件系统打开文件

Kis*_*aak 4 iphone objective-c ipad ios

我从服务器下载了一些文件并存储到本地文件系统中.我想在设备中使用默认应用程序打开它们.如何使用默认应用程序打开文件.请提供一些示例代码.

谢谢

Bam*_*rld 11

首先,您需要使用NSURL对象表示资源(要打开的下载文件).以下假设一个名为filePath的NSString已初始化,其中包含要打开的资源的路径.

NSURL *resourceToOpen = [NSURL fileURLWithPath:filePath];
Run Code Online (Sandbox Code Playgroud)

然后最好先检查是否有应用程序打开资源.

BOOL canOpenResource = [[UIApplication sharedApplication] canOpenURL:resourceToOpen];
Run Code Online (Sandbox Code Playgroud)

最后,如果上面的行返回yes,则打开资源.

if (canOpenResource) { [[UIApplication sharedApplication] openURL:resourceToOpen]; }
Run Code Online (Sandbox Code Playgroud)

我引用了UIApplication类引用中关于实例方法canOpenURL的以下内容:

此方法保证,如果调用openURL:,将启动另一个应用程序来处理它.它不保证完整的URL有效.

但是,如果您希望向用户显示已使用适当的UTI注册该文件类型的应用程序列表,您可以执行以下操作 -

UIDocumentInteractionController *documentController = [UIDocumentInteractionController interactionControllerWithURL:[NSURL fileURLWithPath:filePath]];
documentController.delegate = self;
[documentController presentOpenInMenuFromRect:CGRectZero inView:self.view animated:YES];
Run Code Online (Sandbox Code Playgroud)

您必须实现UIDocumentInteractionControllerDelegate协议.此外,对于已知文件类型,系统应解析UTI属性的正确分配而不进行设置.