如何在iOS中打开没有网址方案的手机应用程序

时间:2013-10-28 07:40:10

标签: ios objective-c jailbreak iphone-privateapi tweak

我正在使用锁屏调整。在我的自定义锁屏视图中,有一个按钮,您可以使用它来锁定和打开本机电话应用程序。我正在使用的IDE是iOSOpenDev。

我尝试过这些方法:

  1. 网址方案:我不想要拨号显示,所以放弃了。

  2. SBSLaunchApplicationWithIdentifier 即可。这是最受欢迎的方法,如下所示:

  3. void* sbServices = dlopen("/System/Library/PrivateFrameworks/SpringBoardServices.framework/SpringBoardServices", RTLD_LAZY);
    int (*SBSLaunchApplicationWithIdentifier)(CFStringRef identifier, Boolean suspended) =
       dlsym(sbServices, "SBSLaunchApplicationWithIdentifier");
    int result = SBSLaunchApplicationWithIdentifier((CFStringRef)bundleId, false);
    dlclose(sbServices);
    

    但在.xm文件中,编译器告诉我

      

    无法使用'void *'“类型的右值初始化'int(*)(CFStringRef,Boolean)'类型的变量。

    我该怎么做? 谢谢!

1 个答案:

答案 0 :(得分:2)

我不确定您使用哪种编译器会出现此错误... Apple LLVM编译器(4.2或5.0)接受您显示的代码,没有任何问题。

但是,我认为,您应该能够通过将dlsym()的返回值强制转换为(int (*)(CFStringRef, Boolean))来修复该编译错误:

int (*SBSLaunchApplicationWithIdentifier)(CFStringRef identifier, Boolean suspended) =
   (int (*)(CFStringRef, Boolean))dlsym(sbServices, "SBSLaunchApplicationWithIdentifier");