我正在使用锁屏调整。在我的自定义锁屏视图中,有一个按钮,您可以使用它来锁定和打开本机电话应用程序。我正在使用的IDE是iOSOpenDev。
我尝试过这些方法:
网址方案:我不想要拨号显示,所以放弃了。
SBSLaunchApplicationWithIdentifier 即可。这是最受欢迎的方法,如下所示:
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)'类型的变量。
我该怎么做? 谢谢!
答案 0 :(得分:2)
我不确定您使用哪种编译器会出现此错误... Apple LLVM编译器(4.2或5.0)接受您显示的代码,没有任何问题。
但是,我认为,您应该能够通过将dlsym()
的返回值强制转换为(int (*)(CFStringRef, Boolean))
来修复该编译错误:
int (*SBSLaunchApplicationWithIdentifier)(CFStringRef identifier, Boolean suspended) =
(int (*)(CFStringRef, Boolean))dlsym(sbServices, "SBSLaunchApplicationWithIdentifier");