本文转载至 http://blog.csdn.net/zaitianaoxiang/article/details/6658492

File type handling is new with iPhone OS 3.2, and is different than the already-existing custom URL schemes. You can register your application to handle particular document types, and any application that uses a document controller can hand off processing of these documents to your own application.

文件类型处理是iphone os 3.2新增的,与已经存在的自定义URL方案是不同的。你能注册你的应用程序来处理特定的文件类型并且任何应用程序 使用文档控制器能手动处理这些文档在你的应用程序中。

For example, my application Molecules (for which the source code is available) handles the .pdb and .pdb.gz file types, if received via email or in another supported application.

例如,我的molecules应用程序能处理 以 pdb , pdb.gz为后缀的文件类型 ,如果收到通过电子邮件或其他支持的应用程序。

To register support, you will need to have something like the following in your Info.plist:

注册支持,你需要在info.plist文件中增加像下面一样的内容。

<key>CFBundleDocumentTypes</key>
<array>
    <dict>
        <key>CFBundleTypeIconFiles</key>
        <array>
            <string>Document-molecules-320.png</string>
            <string>Document-molecules-64.png</string>
        </array>
        <key>CFBundleTypeName</key>
        <string>MoleculesStructureFile</string>
        <key>CFBundleTypeRole</key>
        <string>Viewer</string>
        <key>LSHandlerRank</key>
        <string>Owner</string>
        <key>LSItemContentTypes</key>
        <array>
            <string>com.sunsetlakesoftware.molecules.pdb</string>
            <string>org.gnu.gnu-zip-archive</string>
        </array>
    </dict>
</array>

Two images are provided that will be used as icons for the supported types in Mail and other applications capable of showing documents. The LSItemContentTypes key lets you provide an array of Uniform Type Identifiers (UTIs) that your application can open. For a list of system-defined UTIs, see Apple's Uniform Type Identifiers Reference. Even more detail on UTIs can be found in Apple's Uniform Type Identifiers Overview. Those guides reside in the Mac developer center, because this capability has been ported across from the Mac.

两个图像将作为支持的邮件和其他应用程序能够显示文件类型的图标。LSItemContentTypes键可让您提供一个可以使您的应用程序打开的统一类型标识符(UTI)数组。对于一个系统定义的UTI的列表,请查看苹果的Uniform Type Identifiers Reference(统一类型标识符参考)。UTI更详细信息,可以在苹果公司的Uniform Type Identifiers Overview(统一类型标识符的概述)中找到。这些指南位于Mac开发中心,因为这种能力已经从Mac移植通过。

One of the UTIs used in the above example was system-defined, but the other was an application-specific UTI. The application-specific UTI will need to be exported so that other applications on the system can be made aware of it. To do this, you would add a section to your Info.plist like the following:

上面的例子中用到的UTI的一种是系统定义的,还有其他应用程序特定的UTI。应用程序特定的UTI 需要被导出,以使系统上的其他应用程序能知道它。要做到这一点,你需要像下面一样添加一部分内容到你的info.plist文件中。

<key>UTExportedTypeDeclarations</key>
<array>
    <dict>
        <key>UTTypeConformsTo</key>
        <array>
            <string>public.plain-text</string>
            <string>public.text</string>
        </array>
        <key>UTTypeDescription</key>
        <string>MoleculesStructureFile</string>
        <key>UTTypeIdentifier</key>
        <string>com.sunsetlakesoftware.molecules.pdb</string>
        <key>UTTypeTagSpecification</key>
        <dict>
            <key>public.filename-extension</key>
            <string>pdb</string>
            <key>public.mime-type</key>
            <string>chemical/x-pdb</string>
        </dict>
    </dict>
</array>

This particular example exports the com.sunsetlakesoftware.molecules.pdb UTI with the .pdb file extension, corresponding to the MIME type chemical/x-pdb.

这个特殊的例子导出com.sunsetlakesoftware.molecules.pdb UTI (以.pdb为文件扩展名,对应的MIME类型为 chemical/x-pdb)

With this in place, your application will be able to handle documents attached to emails or from other applications on the system. In Mail, you can tap-and-hold to bring up a list of applications that can open a particular attachment.

在此,您的应用程序将能够处理连接到电子邮件或系统上其他应用程序的文件。在邮箱中,你可以轻按和按住去弹出一个可以打开一个特定附件的应用程序列表。

When the attachment is opened, your application will be started and you will need to handle the processing of this file in your -application:didFinishLaunchingWithOptions: application delegate method. It appears that files loaded in this manner from Mail are copied into your application's Documents directory under a subdirectory corresponding to what email box they arrived in. You can get the URL for this file within the application delegate method using code like the following:

打开附件时,您的应用程序将被启动,您将需要在您的应用程序中处理这个文件通过didFinishLaunchingWithOptions:应用程序委托方法。看来,通过这种从相应收到的电子邮件中的文件复制到应用程序的文件目录下的子目录中的加载方式,通过应用程序中的委托方法,类似于下面的代码的方法,您可以得到此文件:

NSURL*url=(NSURL*)[launchOptions valueForKey:UIApplicationLaunchOptionsURLKey];

Note that this is the same approach we used for handling custom URL schemes. You can separate the file URLs from others by using code like the following:

请注意,这是我们处理自定义的URL计划使用相同的方法。通过使用类似于下面的代码,你可以区分其开其他的文件URL

if([url isFileURL])
{
    // Handle file being passed in
}
else
{
    // Handle custom URL scheme
}

UTI iPhone支持依文件后缀名打开应用的更多相关文章

  1. 如何让Composer的autoload支持自定义文件后缀名

    PHP的Composer工具规范了我们对系统各种资源库的加载格式,借助于PHP的自动加载机制,可以很大程度上简化在应用开发过程中的类库文件引用场景.但到目前为止,它有个不是问题的问题,就是文件后缀名只 ...

  2. java使用新的(nio)遍历文件(支持文件后缀名、文件名正则表达式匹配)

    import org.junit.Test; import java.io.IOException; import java.nio.file.Files; import java.nio.file. ...

  3. Linux下的文件及文件后缀名

    Linux下的文件及文件后缀名 2013-03-14 15:34 6969人阅读 评论(0) 收藏 举报 ++++++++++++++++++++++++++++++++++++++正文+++++++ ...

  4. 关于Windows下的文件后缀名问题

    一.背景说明 有很多的小伙伴对windows下的文件后缀名不能很好地理解作用和区别,更不用说高深的使用了,在这里给大家说一下这些文件后缀名到底有什么区别,有什么作用呢? 二.说明 简单的说来,wind ...

  5. -05 08:57 ARCGIS地统计学计算文件后缀名为.shp文件制作

    2011-07-05 08:57 ARCGIS地统计学计算文件后缀名为.shp文件制作 ARCAMP软件要进行地统计计算的文件后格式后缀名必须为.shp的文件,网上介绍的方法复杂难懂,那么制作.shp ...

  6. C#文件后缀名详解

    C#文件后缀名详解 .sln:解决方案文件,为解决方案资源管理器提供显示管理文件的图形接口所需的信息. .csproj:项目文件,创建应用程序所需的引用.数据连接.文件夹和文件的信息. .aspx:W ...

  7. return 通过文件后缀名得到的函数字符串

    <?php//图片处理工具类class Image{//属性private $thumb_width; //缩略图的宽private $thumb_height;//错误属性public $th ...

  8. 你误解了Windows的文件后缀名吗?

    一.背景说明 有很多的小伙伴对windows下的文件后缀名不能很好地理解作用和区别,更不用说高深的使用了,在这里给大家说一下这些文件后缀名到底有什么区别,有什么作用呢? 二.说明 简单的说来,wind ...

  9. Win10怎么批量修改文件后缀名?

    Win10怎么批量修改文件后缀名?一般我们都是右击重命名,但是,如果要改的文件很多的话,这样做事不行的,该怎么批量修改后缀名呢?下面我们一起来看看两种解决办法 通常我们修改文件后缀名都是右击>& ...

随机推荐

  1. .Net使用程序发送邮件时的问题

    在做项目的时候,不可避免的会用到给用户发送邮件的问题,一开始我用的是qq的smtp服务器,但是会出错,不管账号密码,服务器地址端口等怎么配置都是出错.后百度之,发现可能是qq服务器本身就是禁止这个功能 ...

  2. 通过http协议发送json格式请求并解析

    本人初入门径.代码略显粗糙,欢迎指点改正! 最近在做公司的项目的时候,需要和其他公司进行业务上的对接,对方直接扔过来一个协议用来开发,最近稍微看了一下,写了一个通过协议获取数据的方法 对方的协议内容部 ...

  3. Python批量修改文件夹内所有json文件中部分内容

    #coding=utf-8 import os import json #获取目标文件夹的路径 filedir = os.getcwd()+'/ceshi' #获取文件夹中的文件名称列表 filena ...

  4. SVN服务的部署及使用

      环境说明 系统版本     CentOS 7.2 x86_64   SVN是Subversion的简称,是一个开放源代码的版本控制系统,相较于RCS.CVS,它采用了分支管理系统,它的设计目标就是 ...

  5. 从C转到JAVA学习路之基本知识对比(转)

    转自:http://blog.csdn.net/andywxf01/article/details/53502615 我一直在用C开发,想转到Java时最容易想到的事就是把C里写的代码和功能用JAVA ...

  6. 关于public、private、protected、internal

    1.private修饰符 private修饰符用于设置类或类成员的訪问权限仅为所属类的内部, private也被称为私有修饰符.某些时候须要訪问私有类成员时,可通过get和set訪问器读取或改动. 2 ...

  7. ns3加入模块之vanet-highway

    在网上搜了下加入模块的教程,搜到了一个帖子:ns3加入模块 ,可是这个帖子只给出了如何加入的步骤.我认为写的比較简单,当我们须要加入别的模块时就不知道如何操作了. 所以,我写这个帖子,会将非常多遇到的 ...

  8. Openerp图片路径处理

    Openerp目前存储图片如人力资源头像图片等都是以二进制的方式存储在数据库中,若要修改数据库里只存储路径可以用这种方法 Image 装饰器: Image装饰器包含3中图片显示 Image 大图片 i ...

  9. C#实现的根据日期得到今天是星期几

    算法如下:   基姆拉尔森计算公式: W= (d+2*m+3*(m+1)/5+y+y/4-y/100+y/400) mod 7  在公式中d表示日期中的日数,m表示月份数,y表示年数.注意:在公式中有 ...

  10. laravel框架查看执行过的sql语句

    1.在routes.php中添加如下语句 Event::listen('illuminate.query', function($sql,$param) {     file_put_contents ...