概述
像百度网盘等应用,里面的文件打开时,都可以通过以下应用再打开文件。下面红色框框内的我的jpg就是我做的一个例子。因为例子没有提供Icon,所以显示的是默认icon。
下面就是这例子的主要步骤和代码。
例子是一个打开jpg图片程序。
1、在项目的**info.plist文件中添加:
<key>CFBundleDocumentTypes</key>
<array>
<dict>
<key>CFBundleTypeIconFiles</key>
<array>
<string>icon@2x.png</string>
<string>icon.png</string>
</array>
<key>CFBundleTypeName</key>
<string>Molecules Structure File</string>
<key>CFBundleTypeRole</key>
<string>Viewer</string>
<key>LSHandlerRank</key>
<string>Owner</string>
<key>LSItemContentTypes</key>
<array>
<string>com.fzrong.jpg</string>
<string>org.gnu.gnu-zip-archive</string>
</array>
</dict>
</array>
<key>UTExportedTypeDeclarations</key>
<array>
<dict>
<key>UTTypeConformsTo</key>
<array>
<string>public.plain-text</string>
<string>public.text</string>
</array>
<key>UTTypeDescription</key>
<string>Molecules Structure File</string>
<key>UTTypeIdentifier</key>
<string>com.fzrong.jpg</string>
<key>UTTypeTagSpecification</key>
<dict>
<key>public.filename-extension</key>
<string>jpg</string>
<key>public.mime-type</key>
<string>image/jpg</string>
</dict>
</dict>
</array>
这就是告诉系统,你能打开 jpg这个文件类型。
2、打开到自己的app时,要截取到过来资源的文件路径:
在Appdelegate里添加代码如下:
- (BOOL)application:(UIApplication *)application openURL:(NSURL *)url sourceApplication:(NSString *)sourceApplication annotation:(id)annotation
{
if (url != nil) {
NSString *path = [url absoluteString];
NSMutableString *string = [[NSMutableString alloc] initWithString:path];
if ([path hasPrefix:@"file://"]) {
[string replaceOccurrencesOfString:@"file://" withString:@"" options:NSCaseInsensitiveSearch range:NSMakeRange(0, path.length)];
}
[self.viewController openPng:string];
}
return YES;
}
要去掉file://文件路径的头,要不然找不到资源。
3、在自己的ViewController里打开jgp显示:
- (void)openPng:(NSString*)string
{
UIImage *image = [[UIImage alloc] initWithContentsOfFile:string];
float width = image.size.width;
float height = image.size.height;
if (width > 320) {
height = (height/width) * 300;
width = 300;
}
CGRect frame = CGRectMake(0, 20, width, height);
imageView.frame = frame;
imageView.image = image;
}
打开之后的效果是这样的:
注意:这都是在真机上演示的。
这里例子咱们可以扩展,怎么打开网盘里的gif图片啊,还有其他自己自定义的格式也可以。
项目完整代码已经上传到:http://download.csdn.net/detail/totogo2010/7460929
或者github: https://github.com/schelling/openFileType
参考:
https://developer.apple.com/library/ios/qa/qa1587/_index.html
http://stackoverflow.com/questions/20869815/open-file-from-local-file-system-with-default-application-ios
最后
以上就是冷静帽子为你收集整理的iOS App让自己的应用在其他应用中打开列表中显示的全部内容,希望文章能够帮你解决iOS App让自己的应用在其他应用中打开列表中显示所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复