iOS开发之调用系统应用
来源:互联网 发布:电视机网络顶盒 编辑:程序博客网 时间:2024/04/30 03:29
在开发某些应用时可能希望能够调用iOS系统内置的电话、短信、邮件、浏览器等应用,此时你可以直接使用UIApplication的OpenURL:方法指定特定的协议来打开不同的系统应用。常用的协议如下:
打电话: tel:或者tel://、telprompt:或telprompt://(拨打电话前有提示)
发短信: sms:或者sms://
发送邮件: mailto:或者mailto://
启动浏览器: http:或者http://
下面以一个简单的demo演示如何调用上面几种系统应用:
#pragma mark - UI事件//打电话- (IBAction)callClicK:(UIButton *)sender { NSString *phoneNumber=@"18813138888";// NSString *url=[NSString stringWithFormat:@"tel://%@",phoneNumber]; //这种方式会直接拨打电话 NSString *url=[NSString stringWithFormat:@"telprompt://%@",phoneNumber];//这种方式会提示用户确认是否拨打电话 [self openUrl:url];}//发送短信- (IBAction)sendMessageClick:(UIButton *)sender { NSString *phoneNumber=@"18500138888"; NSString *url=[NSString stringWithFormat:@"sms://%@",phoneNumber]; [self openUrl:url];}//发送邮件- (IBAction)sendEmailClick:(UIButton *)sender { NSString *mailAddress=@"kenshin@hotmail.com"; NSString *url=[NSString stringWithFormat:@"mailto://%@",mailAddress]; [self openUrl:url];}//浏览网页- (IBAction)browserClick:(UIButton *)sender { NSString *url=@"http://www.cnblogs.com/kenshincui"; [self openUrl:url];}#pragma mark - 私有方法-(void)openUrl:(NSString *)urlStr{ //注意url中包含协议名称,iOS根据协议确定调用哪个应用,例如发送邮件是“sms://”其中“//”可以省略写成“sms:”(其他协议也是如此) NSURL *url=[NSURL URLWithString:urlStr]; UIApplication *application=[UIApplication sharedApplication]; if(![application canOpenURL:url]){ NSLog(@"无法打开\"%@\",请确保此应用已经正确安装.",url); return; } [[UIApplication sharedApplication] openURL:url];}
不难发现当openURL:方法只要指定一个URL Schame并且已经安装了对应的应用程序就可以打开此应用。当然,如果是自己开发的应用也可以调用openURL方法来打开。假设你现在开发了一个应用A,如果用户机器上已经安装了此应用,并且在应用B中希望能够直接打开A。那么首先需要确保应用A已经配置了Url Types,具体方法就是在plist文件中添加URL types节点并配置URL Schemas作为具体协议,配置URL identifier作为这个URL的唯一标识,如下图:
然后就可以调用openURL方法像打开系统应用一样打开第三方应用程序了:
//打开第三方应用- (IBAction)openApplicationClick:(UIButton *)sender { NSString *url=@"wmjh://data"; [self openUrl:url];}
-(BOOL)application:(UIApplication *)application openURL:(NSURL *)url sourceApplication:(NSString *)sourceApplication annotation:(id)annotation 代理方法中接收参数并解析。
-(BOOL)application:(UIApplication *)application openURL:(NSURL *)url sourceApplication:(NSString *)sourceApplication annotation:(id)annotation{ NSString *str=[NSString stringWithFormat:@"url:%@,source application:%@,params:%@",url,sourceApplication,[url host]]; NSLog(@"%@",str); return YES;//是否打开}
- iOS开发之调用系统应用
- 系统服务开发汇总iOS开发系列--调用系统应用
- IOS开发之应用之间的调用
- IOS开发之──应用之间调用(1)
- IOS开发之──应用之间调用(2)
- IOS开发之──应用之间调用
- IOS开发之──应用之间调用
- IOS开发之──应用之间调用(1)
- IOS开发之──应用之间调用(1)
- ios之系统应用
- iOS 开发之调用系统铃声以及震动
- ios开发之 调用系统电话方式(两种)
- iOS开发之调用系统原生分享功能
- iOS --- 使用openURL调用iOS系统应用
- Android之调用系统应用
- 【COCOS2DX-游戏开发之十一】IOS-应用间调用 如游戏调用微博客户端
- iOS 应用中调用系统写邮件
- iOS 开发之调用相机
- 网盘容量反面的技术秘密
- 有趣的机器学习概念纵览:从多元拟合,神经网络到深度学习,给每个感兴趣的人
- 数字证书及其认证过程
- keras学习笔记4——部分连接非共享权重层
- c/c++时间函数
- iOS开发之调用系统应用
- MFC 静态文本框控件
- java 获取后台返回json 并js循环利用
- android jni 出现format not a string literal and no format arguments [-Werror=format-security]问题
- C#使用sharppcap实现网络抓包
- 安装ubuntu分区建议
- wampserver 最新版本 mysql修改数据库密码
- android 打包签名
- java学习之编译时类型和运行时类型