调用系统功能-打电话/发短息/发邮箱/LED灯/地图/截屏
2018-01-16 15:48
429 查看
调用系统打电话/发短息/发邮箱/LED灯功能/地图/截屏
1. 拨打电话- (void)CallIphone:(NSString *)number { NSURL *url = [NSURL URLWithString:[NSString stringWithFormat:@"tel:%@",number]]; // 方法一(返回应用) UIWebView *webView = [[UIWebView alloc] init]; [webView loadRequest:[NSURLRequest requestWithURL:url]]; [self.view addSubview:webView]; // 方法二(留在打电话界面) if ([[UIApplication sharedApplication] canOpenURL:url]) { [[UIApplication sharedApplication] openURL:url]; } }
2. 发短息(发完后留在短信界面)
- (void)sendMessage:(NSString *)number { NSURL *url = [NSURL URLWithString:[NSString stringWithFormat:@"sms://%@",number]]; if ([[UIApplication sharedApplication] canOpenURL:url]) { [[UIApplication sharedApplication] openURL:url]; } }
3. 发邮箱
- (void)sendEmail:(NSString *)emailNum { NSURL *url = [NSURL URLWithString:[NSString stringWithFormat:@"mailto:%@",emailNum]]; if ([[UIApplication sharedApplication] canOpenURL:url]) { [[UIApplication sharedApplication] openURL:url]; } }
4.调用Safari浏览器功能(在开发中遇到应用内打开网页的需求,建议使用UIWebView打开)
if ([[UIApplication sharedApplication] canOpenURL:[NSURL URLWithString:@"http://www.baidu.com/"]]) { [[UIApplication sharedApplication] openURL:[NSURL URLWithString:@"http://www.baidu.com/"]]; }
5. 控制LED灯(导入框架< AVFoundation/AVFoundation.h >)
-(void)turnTorchOn:(BOOL)on { Class captureDeviceClass = NSClassFromString(@"AVCaptureDevice"); if (captureDeviceClass !=nil) { AVCaptureDevice *device = [AVCaptureDevice defaultDeviceWithMediaType:AVMediaTypeVideo]; if ([device hasTorch] && [device hasFlash]){ [device lockForConfiguration:nil]; if (on) { [device setTorchMode:AVCaptureTorchModeOn]; [device setFlashMode:AVCaptureFlashModeOn]; } else { [device setTorchMode:AVCaptureTorchModeOff]; [device setFlashMode:AVCaptureFlashModeOff]; } [device unlockForConfiguration]; }else{ NSLog(@"初始化失败"); } }else{ NSLog(@"没有闪光设备"); } }
6. 跳转WIFI设置
if ([[UIApplication sharedApplication] canOpenURL:[NSURL URLWithString:@"prefs:root=WIFI"]]) { [[UIApplication sharedApplication] openURL:[NSURL URLWithString:@"prefs:root=WIFI"]]; }
7. 跳转到蓝牙设置
if ([[UIApplication sharedApplication] canOpenURL:[NSURL URLWithString:@"prefs:root=Bluetooth"]]) { [[UIApplication sharedApplication] openURL:[NSURL URLWithString:@"prefs:root=Bluetooth"]]; }
8. 跳转到通用设置
if ([[UIApplication sharedApplication] canOpenURL:[NSURL URLWithString:@"prefs:root=General"]]) { [[UIApplication sharedApplication] openURL:[NSURL URLWithString:@"prefs:root=General"]]; }
9.跳转到关于本机
if ([[UIApplication sharedApplication] canOpenURL:[NSURL URLWithString:@"prefs:root=General&path=About"]]) { [[UIApplication sharedApplication] openURL:[NSURL URLWithString:@"prefs:root=General&path=About"]]; }
10.跳转到定位服务
if ([[UIApplication sharedApplication] canOpenURL:[NSURL URLWithString:@"prefs:root=LOCATION_SERVICES"]]) { [[UIApplication sharedApplication] openURL:[NSURL URLWithString:@"prefs:root=LOCATION_SERVICES"]]; }
11.跳转到通知
if ([[UIApplication sharedApplication] canOpenURL:[NSURL URLWithString:@"prefs:root=NOTIFICATIONS_ID"]]) { [[UIApplication sharedApplication] openURL:[NSURL URLWithString:@"prefs:root=NOTIFICATIONS_ID"]]; }
12.调用系统地图
// 获取当前位置 MKMapItem *currentLocation = [MKMapItem mapItemForCurrentLocation]; // 地理编码器 CLGeocoder *geocader = [[CLGeocoder alloc] init]; // 假定终点坐标 [geocader geocodeAddressString:@"" completionHandler:^(NSArray<CLPlacemark *> * _Nullable placemarks, NSError * _Nullable error) { CLPlacemark *endPlacemark = placemarks.lastObject; // 创建一个地图的地标对象 MKPlacemark *endMKPlacemark = [[MKPlacemark alloc] initWithPlacemark:endPlacemark]; // 在地图上标注一个点 MKMapItem *endMapItem = [[MKMapItem alloc] initWithPlacemark:endMKPlacemark]; //MKLaunchOptionsDirectionsModeKey 指定导航模式 //NSString * const MKLaunchOptionsDirectionsModeDriving 驾车 //NSString * const MKLaunchOptionsDirectionsModeWalking 步行 //NSString * const MKLaunchOptionsDirectionsModeTransit 公交 // 打开系统地图,并标出当前位置 [MKMapItem openMapsWithItems:@[currentLocation,endMapItem] launchOptions:@{MKLaunchOptionsShowsTrafficKey:[NSNumber numberWithBool:YES]}]; }];
13. 截屏
截全屏
-(void)viewDidAppear:(BOOL)animated { [superviewDidAppear:animated]; self.view.backgroundColor= [UIColorgreenColor]; UIWindow*screenWindow = [[UIApplicationsharedApplication]keyWindow]; UIGraphicsBeginImageContext(screenWindow.frame.size); [screenWindow.layerrenderInContext:UIGraphicsGetCurrentContext()]; UIImage* viewImage =UIGraphicsGetImageFromCurrentImageContext(); UIGraphicsEndImageContext(); UIImageWriteToSavedPhotosAlbum(viewImage,nil,nil,nil); }
截固定区域
#pragmamark ~~~~~~~~~~ 自定义截屏位置大小的逻辑代码 ~~~~~~~~~~ staticintScreenshotIndex=0; // -(void)ScreenShot{ //这里因为我需要全屏接图所以直接改了,宏定义iPadWithd为1024,iPadHeight为768, //UIGraphicsBeginImageContextWithOptions(CGSizeMake(640, 960), YES, 0);//设置截屏大小 UIGraphicsBeginImageContextWithOptions(CGSizeMake(iPadWidth, iPadHeight), YES,0);//设置截屏大小 [[self.view layer] renderInContext:UIGraphicsGetCurrentContext()]; UIImage *viewImage =UIGraphicsGetImageFromCurrentImageContext(); UIGraphicsEndImageContext(); CGImageRef imageRef =viewImage.CGImage; //CGRect rect = CGRectMake(166, 211, 426, 320);//这里可以设置想要截图的区域 CGRect rect = CGRectMake(0,0, iPadWidth, iPadHeight);//这里可以设置想要截图的区域 CGImageRef imageRefRect =CGImageCreateWithImageInRect(imageRef, rect); UIImage *sendImage =[[UIImage alloc] initWithCGImage:imageRefRect]; UIImageWriteToSavedPhotosAlbum(sendImage, nil, nil, nil);//保存图片到照片库 NSData *imageViewData =UIImagePNGRepresentation(sendImage); NSArray *paths =NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES); NSString *documentsDirectory = [paths objectAtIndex:0]; NSString *pictureName= [NSString stringWithFormat:@"screenShow_%d.png",ScreenshotIndex]; NSString *savedImagePath =[documentsDirectory stringByAppendingPathComponent:pictureName]; NSLog(@"截屏路径打印: %@", savedImagePath); //这里我将路径设置为一个全局String,这里做的不好,我自己是为了用而已,希望大家别这么写 [self SetPickPath:savedImagePath]; [imageViewData writeToFile:savedImagePath atomically:YES];//保存照片到沙盒目录 CGImageRelease(imageRefRect); ScreenshotIndex++; } //设置路径 - (void)SetPickPath:(NSString *)PickImage { _ScreenshotsPickPath =PickImage; } //获取路径<这里我就直接用于邮件推送的代码中去了,能达到效果,但肯定有更好的写法> - (NSString *)GetPickPath { return_ScreenshotsPickPath; }
相关文章推荐
- IOS问题汇总:2015-1-9 iOS 调用系统发短信以及打电话功能
- iOS应用调用系统打电话、发短信和发邮件功能
- iOS 调用系统发短信以及打电话功能
- ios 调用系统发短信以及打电话功能
- iphone中调用系统打电话功能并且结束电话后返回自己的应用
- ios 调用系统功能打电话、发信息
- iOS 调用系统发短信以及打电话功能
- iOS开发之--调用打电话,发邮件,发短信的系统功能的代码
- Android应用开发---调用系统的打电话功能demo
- iOS 调用系统发短信以及打电话功能
- 调用系统的打电话,发短信,系统浏览器,发送邮件的功能
- 调用系统完成发短信,打电话,发邮箱,打开浏览器
- ios 调用系统发短信以及打电话功能
- android 调用系统打电话和发短信和发邮箱等以及得到SD卡的剩余容量
- android中调用系统的发送短信、发送邮件、打电话功能
- iOS应用调用系统打电话、发短信和发邮件功能
- iphone开发中调用系统打电话功能
- iOS开发调用手机打电话,短信,邮箱和地图
- iOS 打电话、发短信、发邮箱 、跳转网站 功能(系统方法)
- 检测收的sim卡的状态,并调用系统的打电话功能