我正在使用 theos 开发锁屏应用程序,部分功能需要手机上某些应用程序的图标图像。如何获取这些图标图像并将它们显示在手机的锁屏上?
到目前为止,我已经尝试了所有我能想到的东西,并且没有运气搜索过跳板标题。我一直在尝试从我通过谷歌找到的建议中检索 SBApplication 和 SBIconModel 中的图像,但我仍然没有运气。
任何帮助是极大的赞赏。谢谢!
我正在使用 theos 开发锁屏应用程序,部分功能需要手机上某些应用程序的图标图像。如何获取这些图标图像并将它们显示在手机的锁屏上?
到目前为止,我已经尝试了所有我能想到的东西,并且没有运气搜索过跳板标题。我一直在尝试从我通过谷歌找到的建议中检索 SBApplication 和 SBIconModel 中的图像,但我仍然没有运气。
任何帮助是极大的赞赏。谢谢!
在你 %hook 一个类之后,在你正在使用的方法中,如果你试图获取邮件应用程序的图标,请执行以下操作
// Get the SBApplication for the mail app
Class $SBApplicationController = objc_getClass("SBApplicationController");
SBApplication *mailApp = [[$SBApplicationController sharedInstance] applicationWithDisplayIdentifier:@"com.apple.mobilemail"];
// Get the SBApplicationIcon for the mail app
SBApplicationIcon *mailAppIcon = [[objc_getClass("SBApplicationIcon") alloc] initWithApplication:mailApp];
重要的是获得您感兴趣的应用程序的正确 DisplayIdentifier。
希望这有帮助!任何问题请大声疾呼。
虽然,我接受以上作为答案,但我最终使用了以下代码,它显示了标题和徽章:
SBIcon *sbIcon = [model applicationIconForDisplayIdentifier:identifier];
SBIconView *app = [[%c(SBIconView) alloc] initWithDefaultSize];
[app setIcon:sbIcon];
//if you want the titles to be conditional
[app setLabelHidden:!titlesEnabled];
//if you want the badge view to be conditional
id badgeView;
if (device_version >= 6.0) badgeView = MSHookIvar<id>(app, "_accessoryView");
else badgeView = MSHookIvar<id>(app, "_badgeView");
if (badgeView) [badgeView setHidden:!badgesEnabled];