iOS PreferenceBundle

时间:2012-01-06 11:27:47

标签: iphone objective-c sdk jailbreak

我正在开发iPhone调整,首选项我创建了一个PreferenceBundle,在捆绑中我需要调用一个SpringBoard方法,但结果总是没有。有没有办法可以调用SBApplication方法?

我正在使用objc_getClass来获取类

SBApplication *app =[[objc_getClass("SBApplicationController") sharedInstance] applicationWithDisplayIdentifier:identifier];

当我用它来调用方法时,结果为null。

是可能的,还是我可以做的一些黑客攻击。我需要从SBApplication获取iconpath。

1 个答案:

答案 0 :(得分:0)

我认为使用C SpringBoadServices函数可能更容易。转到Xcode根文件夹,找到iOS模拟器平台的私有框架SpringBoardServices。将其设置为当前目录并在可执行文件上运行nm

imac-van-ief2:SpringBoardServices.framework ief2$ pwd
/Applications/Xcode 3.2.6/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator4.2.sdk/System/Library/PrivateFrameworks/SpringBoardServices.framework
imac-van-ief2:SpringBoardServices.framework ief2$ nm -g SpringBoardServices | grep SBSCopyIcon
00009548 T _SBSCopyIconImagePNGDataForDisplayIdentifier
00009400 T _SBSCopyIconImagePathForDisplayIdentifier

现在您已找到图标路径功能名称,您可以调用它。将其声明为extern,您就可以这样做。

extern NSString *SBSCopyIconImagePathForDisplayIdentifier(NSString *);

myPath = SBSCopyIconImagePathForDisplayIdentifier(@"com.apple.String");
// Do anything you like
[myPath release];

现在,不要忘记将最终的可执行文件链接到SpringBoardServices框架,并将/System/Library/PrivateFrameworks添加到框架搜索路径中。