我想做一个App,实现在来/去电时 show出自定义的界面,而不是系统的通话界面。
我的具体思路是: 有一个开机自动运行的Daemon,在实时监听来去电 事件。在得知有来去电事件后,我会先隐藏系统的通话界面,然后show 出自己的界面. 这就是整体的思路.目前已经到最后一步,show 出自己的界面。但是show出自己的界面,必须要使用SpringBoard,而SpringBoard 又不是一个框架.
所以只有借助 Mobile Substrate ......
好吧,我就是想知道SpringBoard 中的私有API 该怎样使用?
哪位大侠 给指点下?
我的具体思路是: 有一个开机自动运行的Daemon,在实时监听来去电 事件。在得知有来去电事件后,我会先隐藏系统的通话界面,然后show 出自己的界面. 这就是整体的思路.目前已经到最后一步,show 出自己的界面。但是show出自己的界面,必须要使用SpringBoard,而SpringBoard 又不是一个框架.
所以只有借助 Mobile Substrate ......
好吧,我就是想知道SpringBoard 中的私有API 该怎样使用?
哪位大侠 给指点下?
你的意思是直接加 SpringBoard.framework? 但SpringBoard 根本没有FrameWork... --!
#define SBSERVPATH "/System/Library/PrivateFrameworks/SpringBoardServices.framework/SpringBoardServices"
#define UIKITPATH "/System/Library/Framework/UIKit.framework/UIKit"// Don't use this code in real life, boys and girls. It is not App Store friendly.
// It is, however, really nice for testing callbacks
+ (void) setAirplaneMode: (BOOL)status;
{
mach_port_t *thePort;
void *uikit = dlopen(UIKITPATH, RTLD_LAZY);
int (*SBSSpringBoardServerPort)() = dlsym(uikit, "SBSSpringBoardServerPort");
thePort = (mach_port_t *)SBSSpringBoardServerPort();
dlclose(uikit);
// Link to SBSetAirplaneModeEnabled
void *sbserv = dlopen(SBSERVPATH, RTLD_LAZY);
int (*setAPMode)(mach_port_t* port, BOOL status) = dlsym(sbserv, "SBSetAirplaneModeEnabled");
setAPMode(thePort, status);
dlclose(sbserv);
}
#endif本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/ArthurChenJS/archive/2011/03/19/6261824.aspx
恩,这篇 BLOG 我已经看过,并且已经测试过,在实机上很容易崩溃。不知是什么原因?
我测试也会崩溃,我以前曾经在低版本的系统上测试没问题,估计是Ios版本问题。
只要知道类名和方法Class a = NSClassFromString("Springboard");
[a someFunc];