尽管iPhone不允许同时运行两个应用程序,我们可以从自己的应用程序中启动另一个应用程序,并且可以在应用程序之间共享数据。我们可以使用UIApplication类的openURL:方法从一个应用程序来启动另一个应用程序。例如,要在Safari应用程序中打开Google主页,我们可以编写如下代码:

NSURL *url = [NSURL URLWithString:@

      "http://google.com"];

[[UIApplication sharedApplication]o

    penURL:url];

[这里的http://部分叫做URL方案(URL scheme),它表示想要载入的应用程序。
还有几种用于本地iPhone应用程序的URL方案,并且可以使用类似的方式来启动它们。
例如,要启动Mail应用程序(如图3-15所示),我们可以使用:

NSURL *url = [NSURL URLWithString:@

      "mailto:steve@apple.com

subject= t

      est"];

[[UIApplication sharedApplication] o

    penURL:url];

要启动SMS应用程序,我们可以编写如下代码:

NSURL *url = [NSURL URLWithString:  -"sms:555-1234"];  [[UIApplication sharedApplication]  -penURL:url]; 要拨打一个电话号码,我们可以使用如下代码:

NSURL *url=[NSURL URLWithString:@"tel:/

      /555-1234"];

[[UIApplication sharedApplication]o

    penURL:url];

要启动Maps应用程序来查找一个披萨店(如图3-16所示),我们使用如下代码:

NSURL *url = [NSURL URLWithString:@

      "http://maps.google.com/maps?

q=p

      izza"];

[[UIApplication sharedApplication]o

    penURL:url];

我们也可以使用URL方案来启动自己的应用程序:
用一个定制的URL方案来启动应用程序:
1)创建一个新的基于视图的应用程序,将其保存为URLSchemeExample。
2)在Xcode Groups & Files面板中,展开Resource部分,并且选择<app>-Info.plist文件。
3)鼠标右键点击Information Property List键,并点击添加箭头从列表中选择“URL types”(如图3-17所示)。
4)展开Item 1,用鼠标右键点击URL identifier,并且再次选择添加箭头从列表中选择URL Schemes(如图3-18所示)。

 
图3-16   启动Maps应用程序并查找披萨店
 
(点击查看大图)图3-17   添加一个URL类型
 
图3-18   添加一个URL方案
 
图3-19   设置URL方案的名称

5)选择Item 1,并且将其值设置为myapplication(如图3-19所示)。
6)打开URLSchemeExampleView Controller.m,取消对viewDidLoad方法的注释,并且编写如下代码:
[self.view setBackgroundColor:[

    UIColor redColor]];

7)构建并运行应用程序。应该看到一个没有内容的红色屏幕。应用程序此时不会做任何事情,但是通过运行它(安装在iPhone或者模拟器上的应用程序),我们只是注册在步骤5中创建的URL方案(myapplication)。
8)我们可以使用如下代码,从另一个不同的应用程序启动该应用程序:

NSURL *url = [NSURL URLWithString:@"myapplication:"];

[[UIApplication sharedApplication] openURL:url];

转:http://blog.csdn.net/zzzili/article/details/8449893

IOS在一个程序中启动另一个程序的更多相关文章

  1. Android 在一个程序中启动另一个程序

    Android 开发有时需要在一个应用中启动另一个应用,比如Launcher加载所有的已安装的程序的列表,当点击图标时可以启动另一个应用.一般我们知道了另一个应用的包名和MainActivity的名字 ...

  2. Android 在一个程序中启动另一个程序(包名,或者类名)

    http://hi.baidu.com/xiaofanqing/item/6fd724f7c5bb6dce531c26b7 Android 开发有时需要在一个应用中启动另一个应用,比如Launcher ...

  3. 在android应用程序中启动其他apk程序

    Android 开发有时需要在一个应用中启动另一个应用,比如Launcher加载所有的已安装的程序的列表,当点击图标时可以启动另一个应用. 一般我们知道了另一个应用的包名和MainActivity的名 ...

  4. vc++ 在程序中运行另一个程序的方法

    在vc++ 程序中运行另一个程序的方法有三个: WinExec(),ShellExcute()和CreateProcess() 三个SDK函数: WinExec,ShellExecute ,Creat ...

  5. WP8的新功能-通过一个程序来启动另一个程序

    Wp8对原来的WP7做了大量的优化...其中一个就包括Protocol Association,也就是通过uri来打开另外一个程序,这也就是说,我们可以做一个程序来启动另外一个程序了,如微信,QQ之类 ...

  6. android在一个应用程序员启动另一个程序

    一般我们知道了另一个应用的包名和MainActivity的名字之后便可以直接通过如下代码来启动: Intent intent = new Intent(Intent.ACTION_MAIN); int ...

  7. android 在一个应用中启动另一个应用

    在程序开发过程当中,常遇到需要启动另一个应用程序的情况,比如在点击软件的一个按钮可以打开地图软件. 如果既有包名又有主类的名字,那就好 办了, 直接像下面就行: [html]  Intent inte ...

  8. android在程序中打开另一个程序

    在开发android应用的时候,在一些情况下要有前置条件,比如这边所说的要启动时要确保别的应用程序服务已经打开  或者在操作中启动别的应用等. 先来一段google上的代码: 1. 已知包名和类名的情 ...

  9. 在一个Activity中启动另一个Activity

    一.新建一个空的工程 二.添加一个Activity并命名为BAty 三.在activity_main.xml中添加一个按钮,设置id号为btnStartB <Button android:lay ...

随机推荐

  1. MinGW-MSYS Bundle Win32编译ffmpeg 生成DLL并加入X264模块

    组件资源站点 1)MinGW-MSYS Bundle http://sourceforge.net/projects/mingwbundle/files/ 2)yasm汇编器 http://yasm. ...

  2. CentOS下编译安装python包管理安装工具pip教程

    ubuntu 安装pip 代码如下: apt-get install python-pip 安装requests, pip install requests 对于centos的,直接 yum inst ...

  3. C# 图片和二进制之间的转换

    1> 图片转二进制  public byte[] GetPictureData(string imagepath){/**/////根据图片文件的路径使用文件流打开,并保存为byte[] Fil ...

  4. netty 并发访问测试配置

    linux – 1.查看有关的选项 /sbin/sysctl -a|grep net.ipv4.tcp_tw     net.ipv4.tcp_tw_reuse = 0     #表示开启重用.允许将 ...

  5. Linux 常用基本命令及应用技巧

    需要pdf 版 联系我 我的文件中有目录一.Linux 的常用基本命令................................................................. ...

  6. Git配置用户名密码

    配置Git 在Linux下和windows下配置Git的方法差不多,只是在Linux下,可以在命令行里直接使用git config进行配置, 而在windows下则要先打开“Git Bash”,进入m ...

  7. Windows-caffe配置

    我在博客园的第一篇博客开始了,好紧张,好激动,好淫荡...哈哈O(∩_∩)O哈! 下面开始进入正题.配置环境为windows7+cuda7.5+vs2013+matlab2014a 之前用的happy ...

  8. 深度学习基础系列(九)| Dropout VS Batch Normalization? 是时候放弃Dropout了

    Dropout是过去几年非常流行的正则化技术,可有效防止过拟合的发生.但从深度学习的发展趋势看,Batch Normalizaton(简称BN)正在逐步取代Dropout技术,特别是在卷积层.本文将首 ...

  9. poj1273(Edmonds-Karp)

    这道题可以算是例题了. 求解最大流,采用EK算法,用广搜查找增广路径,找到后更新网络流矩阵,循环执行直至找不到增广路径为止.这里要小心的是重复边的情况. 程序也是参照了网上的模版来写的,有一些技巧.如 ...

  10. IE访问历史记录恢复工具pasco

    IE访问历史记录恢复工具pasco IE浏览器会自动记录用户访问网站的操作,并将这些信息保存在IE缓存中的index.dat文件中.通过分析这些历史记录,可以还原用户行为.为了便于数字取证,Kali ...