我想做一个App,实现在来/去电时 show出自定义的界面,而不是系统的通话界面。
我的具体思路是: 有一个开机自动运行的Daemon,在实时监听来去电 事件。在得知有来去电事件后,我会先隐藏系统的通话界面,然后show 出自己的界面. 这就是整体的思路.目前已经到最后一步,show 出自己的界面。但是show出自己的界面,必须要使用SpringBoard,而SpringBoard 又不是一个框架.
所以只有借助 Mobile Substrate ......
好吧,我就是想知道SpringBoard 中的私有API 该怎样使用?
哪位大侠 给指点下?

解决方案 »

  1.   

    http://blog.csdn.net/ArthurChenJS/archive/2011/04/21/6339670.aspx
      

  2.   


    你的意思是直接加 SpringBoard.framework? 但SpringBoard 根本没有FrameWork... --!
      

  3.   

    到cocoa china看看
      

  4.   

    好吧,我的另外一篇blog在上,不是没有framework就不能加载的http://blog.csdn.net/ArthurChenJS/archive/2011/03/19/6261824.aspx2 :这是使用 SpringBoardServices.framework 来设置飞行模式开关 #ifdef SUPPORTS_UNDOCUMENTED_API
    #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
      

  5.   


    恩,这篇 BLOG 我已经看过,并且已经测试过,在实机上很容易崩溃。不知是什么原因?
      

  6.   


    我测试也会崩溃,我以前曾经在低版本的系统上测试没问题,估计是Ios版本问题。
      

  7.   

    ArthurChenJS 你好,我想使用SpringBoard 中的私有API    SBWiFiManager.h 里面的方法,应该怎么做呢?
      

  8.   

    不需要连接framework
    只要知道类名和方法Class a = NSClassFromString("Springboard");
    [a someFunc];