我的问题与其他问题不同,因为我正在为越狱环境编码。我正在编辑的方法属于SpringBoard,并在所有应用程序上创建系统范围的更改。使用此命令:
[[NSBundle mainBundle] bundleIdentifier]
只带来SpringBoard,因为此方法属于SpringBoard。那么有没有办法告诉SpringBoard前哪个应用程序处于活动状态?
答案 0 :(得分:0)
-(NSString*)topApplication
类中有BKSWorkspace
方法,它返回最顶层应用程序的包标识符。为了获得BKSWorkspace
的有效实例,您需要挂钩它的-(id)init
方法来为自己保留和存储实例。 SpringBoard以这样的方式存储这些实例,即在不挂钩init
的情况下无法访问它们。
答案 1 :(得分:0)
事情比人们想象的容易。我发现这会带来答案:
SBApplication *front = [[objc_getClass("SpringBoard") sharedApplication] _accessibilityFrontMostApplication];
NSString *runner = front.bundleIdentifier;