如何以编程方式拨打电话?

我需要在我的应用程序中通过button点击进行编程调用。

为此,我find了这样的代码。

[[UIApplication sharedApplication] openURL:[NSURL URLWithString:@"tel:1-800-555-1212"]]; 

它是否在iPhone SDK 3.0和iPhone 2.0的工作

可以帮助吗?

提前感谢你。

保持电话号码在一个单独的string。

 NSString *phoneNumber = @"1-800-555-1212"; // dynamically assigned NSString *phoneURLString = [NSString stringWithFormat:@"tel:%@", phoneNumber]; NSURL *phoneURL = [NSURL URLWithString:phoneURLString]; [[UIApplication sharedApplication] openURL:phoneURL]; 
  NSLog(@"Phone calling..."); UIDevice *device = [UIDevice currentDevice]; NSString *cellNameStr = [NSString stringWithFormat:@"%@",self.tableCellNames[indexPath.row]]; if ([[device model] isEqualToString:@"iPhone"] ) { NSString *phoneNumber = [@"tel://" stringByAppendingString:cellNameStr]; [[UIApplication sharedApplication] openURL:[NSURL URLWithString:phoneNumber]]; } else { UIAlertView *warning =[[UIAlertView alloc] initWithTitle:@"Note" message:@"Your device doesn't support this feature." delegate:nil cancelButtonTitle:@"OK" otherButtonTitles:nil]; [warning show]; } 

// VKJ

下面的代码片段检查SIM卡是否存在,如果设备能够进行呼叫,如非SIM卡设备

  #import <CoreTelephony/CTTelephonyNetworkInfo.h> #import <CoreTelephony/CTCarrier.h> if ([[UIApplication sharedApplication] canOpenURL:[NSURL URLWithString:@"tel://"]]) { // Check if iOS Device supports phone calls CTTelephonyNetworkInfo *netInfo = [[CTTelephonyNetworkInfo alloc] init]; CTCarrier *carrier = [netInfo subscriberCellularProvider]; NSString *mnc = [carrier mobileNetworkCode]; // User will get an alert error when they will try to make a phone call in airplane mode. if (([mnc length] == 0)) { // Device cannot place a call at this time. SIM might be removed. } else { // iOS Device is capable for making calls } } else { // iOS Device is not capable for making calls } if ( ! [[UIApplication sharedApplication] canOpenURL:[NSURL URLWithString:@"sms:"]]) { // iOS Device is not capable to send SMS messages. } 

不要忘记添加CoreTelephony框架

信用