引
在应用程序内,调用系统的功能来实现打电话、发短信和发邮件,通过电话号码或者邮箱,直接跳转到系统的功能界面。
PS:调试好像只能真机调试,模拟器没有反应,真机就可以跳转,不知道是不是必须真机,但方法肯定是可行的。
1、打电话
应用内调用系统打电话有两种方式:
1)WebView方式
使用WebView来跳转,把电话号码通过URL传递给WebView,这种方式会弹出是否要拨打的提示,可以选择拨打或者不拨打,打完也会自动回到应用界面,推荐。
代码语言:javascript复制UIWebView *callWebview =[[UIWebView alloc] init];
NSURL *telURL =[NSURL URLWithString:[NSString stringWithFormat:@"tel:%@",self.phoneNumber.text]];
[callWebview loadRequest:[NSURLRequest requestWithURL:telURL]];
[self.view addSubview:callWebview];
在URL中加入“tel:”开头,后接电话号码,系统就会识别为调用拨号器了。
2)UIApplication方式
使用UIApplication来跳转,同样传递和上一种方式同样的URL,这种方式不会弹出提示问你确认拨打与否,而是直接拨打,打完也会停在通讯录那,不会回到应用,不推荐。
代码语言:javascript复制NSURL *telURL =[NSURL URLWithString:[NSString stringWithFormat:@"tel:%@",self.phoneNumber.text]];
[[UIApplication sharedApplication] openURL:telURL];
2、发短信
应用内调用系统发短信也有两种方式,与打电话是一样的,唯一的不同是URL中要以“sms:”开头,这样就可以告诉系统要调用的是发短信功能:
1)WebView方式
使用WebView来跳转,把电话号码通过URL传递给WebView,这种方式会跳到短信界面发送,推荐。
代码语言:javascript复制UIWebView *smsWebview =[[UIWebView alloc] init];
NSURL *telURL =[NSURL URLWithString:[NSString stringWithFormat:@"sms:%@",self.phoneNumber.text]];
[smsWebview loadRequest:[NSURLRequest requestWithURL:telURL]];
[self.view addSubview:smsWebview];
2)UIApplication方式
使用UIApplication来跳转,这种方式会在后台直接发送,不推荐。
代码语言:javascript复制NSURL *telURL =[NSURL URLWithString:[NSString stringWithFormat:@"sms:%@",self.phoneNumber.text]];
[[UIApplication sharedApplication] openURL:telURL];
3、发邮件
发邮件还是一样使用WebView的方式,与打电话、发短信都是一样的,要改的也是URL中要以“mailto:”开头,后接邮箱地址:
代码语言:javascript复制UIWebView *emailWebview =[[UIWebView alloc] init];
NSURL *emailURL =[NSURL URLWithString:[NSString stringWithFormat:@"mailto:%@",self.email.text]];
[emailWebview loadRequest:[NSURLRequest requestWithURL:emailURL]];
[self.view addSubview:emailWebview];
这样会跳转到系统自带的邮箱应用去。
在使用这些功能时,应该注意正则表达式检测手机号码、邮箱的格式等。
在这里可以下载我的示例工程:https://github.com/Cloudox/TelTest