iphone SprintBoard部分私有API总结
来源:互联网 发布:c语言!=是什么意思 编辑:程序博客网 时间:2024/04/27 17:37
本文介绍iOS SrpintBoard框架的部分私有API,具体包括:
- 获取ios上当前正在运行的所有App的bundle id(不管当前程序是在前台还是后台都可以)
- 获取ios上当前前台运行的App的bundle id(不管当前程序是在前台还是后台都可以)
- 根据ios app的bundle id得到其App名称、图标(不管当前程序是在前台还是后台都可以)
- 直接通过App 的bundle id来运行该App,无需使用url scheme(仅限当前程序在前台时,假如程序在后台能随便运行其他App,那就无敌了@_@)
(1)初始化
void * uikit = dlopen("/System/Library/Framework/UIKit.framework/UIKit", RTLD_LAZY); int (*SBSSpringBoardServerPort)() = dlsym(uikit, "SBSSpringBoardServerPort"); p = (mach_port_t *)SBSSpringBoardServerPort(); dlclose(uikit); sbserv = dlopen(SBSERVPATH, RTLD_LAZY);
(2)获取iphone上所有正在运行的app的bundle id列表
NSArray* (*SBSCopyApplicationDisplayIdentifiers)(mach_port_t* port, BOOL runningApps,BOOL debuggablet) = dlsym(sbserv, "SBSCopyApplicationDisplayIdentifiers");NSArray *currentRunningAppBundleIdArray= SBSCopyApplicationDisplayIdentifiers(p,NO,YES);
(3)得到iphone 前台运行的app的bundle id
void* (*SBFrontmostApplicationDisplayIdentifier)(mach_port_t* port,char * result) = dlsym(sbserv, "SBFrontmostApplicationDisplayIdentifier");char topapp[256];
SBFrontmostApplicationDisplayIdentifier(p,topapp);currentTopAppBundleId=[NSStringstringWithFormat:@"%s",topapp];
(4)根据iphone app的bundle id得到其app名称
NSString * (*SBSCopyLocalizedApplicationNameForDisplayIdentifier)(NSString* ) = dlsym(sbserv, "SBSCopyLocalizedApplicationNameForDisplayIdentifier");NSString *strAppName = SBSCopyLocalizedApplicationNameForDisplayIdentifier(strBundleId);
(5)根据iphone app 的bundle id得到其图标
NSData* (*SBSCopyIconImagePNGDataForDisplayIdentifier)(NSString * bundleid) = dlsym(sbserv, "SBSCopyIconImagePNGDataForDisplayIdentifier"); UIImage *icon = nil; NSData *iconData = SBSCopyIconImagePNGDataForDisplayIdentifier(bundleid); if (iconData != nil) { icon = [UIImage imageWithData:iconData]; } return icon;
(6)直接通过app 的bundle id来运行该app
在ios中,一个app调起另一个app的方式通常是用url scheme,但是用这个 私有app,可以在不需要url scheme的情况下运行任何app
-(void)openAppByBundleId:(NSString*)bundleId{ void* sbServices = dlopen("/System/Library/PrivateFrameworks/SpringBoardServices.framework/SpringBoardServices", RTLD_LAZY); int (*SBSLaunchApplicationWithIdentifier)(CFStringRef identifier, Boolean suspended) = dlsym(sbServices, "SBSLaunchApplicationWithIdentifier"); const char *strBundleId = [bundleId cStringUsingEncoding:NSUTF8StringEncoding]; int result = SBSLaunchApplicationWithIdentifier((__bridge CFStringRef)bundleId, NO); dlclose(sbServices);}
0 0
- iphone SprintBoard部分私有API总结
- iphone SprintBoard部分私有API总结
- [转载]iphone SprintBoard部分私有API总结
- iphone SprintBoard部分私有API总结
- iphone SprintBoard部分私有API总结(不支持iOS8)
- iphone 私有api
- iPhone私有API使用
- Iphone的私有API
- iPhone私有API使用学习
- iPhone私有API使用学习笔记
- xcode 中使用iPhone私有API
- iPhone开发技巧之私有API--- UIBarButtonItem
- iPhone开发技巧之私有API--- UISegmentedControl
- iPhone开发技巧之私有API--- UITableView
- iPhone开发技巧之私有API--- UIApplication
- iPhone开发技巧之私有API--- UIBarButtonItem
- iPhone开发技巧之私有API--- UIBarButtonItem
- iPhone私有API使用学习笔记
- 开源项目Android-Universal-Image-Loader 解析
- Epoll 连接无响应或响应时间过长
- 【徐志摩】我等候你
- Objective C运行时(runtime)技术的几个要点总结
- NSInvocation简单总结
- iphone SprintBoard部分私有API总结
- 使用私有api统计ios app运行时间及次数
- 使用私有api实现自己的iphone桌面,并根据app的使用次数对app排序
- Cas 3.5.2 登录成功后,如何返回用户更多信息?
- ios编程时常见问题总结
- ARC模式下获取retainCount的方法
- iOS7 新后台及下载SDK介绍
- XCode5 编译ffmpeg流程
- ASIHTTPRequest源码简单分析