像百度网盘等应用,里面的文件打开时,都能够通过以下应用再打开文件。以下红色框框内的我的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

最新文章

  1. Selenium 简单的例子
  2. Promise和$.Deferred总结
  3. BeautifulSoup的选择器
  4. HDU 4757 Tree(可持久化Trie+Tarjan离线LCA)
  5. 【转】Memcached安装
  6. jQuery cxScroll 间歇式无缝滚动
  7. Grid – 入门必备!简单易懂的响应式设计指南
  8. Spring Assert(方法入参检测工具类-断言)
  9. MySQL基础之第16章 数据备份与还原
  10. epmap服务
  11. 不用jsonp实现跨域请求
  12. android中sharedPreferences的笔记
  13. cal命令详解与练习
  14. Qt编程之对QGraphicsItem点击右键弹出菜单
  15. 在Centos7.2(64位)下搭建Web服务器
  16. WiFi-ESP8266入门http(3-3)网页认证上网-post请求-ESP8266程序
  17. C#高级编程----错误和异常的总结
  18. Golang生成区间随机整数
  19. 本地没问题 服务器 提示 Server Error in &#39;/&#39; Application
  20. localhost和本机IP和127.0.0.1之间的区别

热门文章

  1. Block 代码快
  2. 用H5和js写一个移动端自定义播放器
  3. 常用linux命令积累
  4. Selenium2+python自动化2-pip降级selenium3.0
  5. 第六章 - 图像变换 - 图像拉伸、收缩、扭曲、旋转[2] - 透视变换(cvWarpPerspective)
  6. iOS开发小技巧--利用运行时得到隐藏的成员变量
  7. 实验一补充内容 Java开发环境的熟悉-刘蔚然
  8. 高效而轻松的sed命令
  9. javascript源码阅读推荐
  10. [布局] bootstrap基本标签总结
  11. Html5与CSS3权威指南 百度云下载
  12. 给自己的QQ群开启腾讯官方的群聊机器人
  13. jQuery与js的length属性
  14. 【洛谷P1963】变换序列
  15. Java开发笔记(七十)Java8新增的几种泛型接口
  16. How to disable transparent hugepages (THP) on Red Hat Enterprise Linux 7
  17. Mac vs code 快捷键
  18. Promise事件比timeout优先
  19. Mysql 5.7.21 设置主从库同步
  20. mysql 架构~多写模式MGR