【问题标题】:Get Application Icon Image From Springboard (Jailbreak)从 Springboard 获取应用程序图标图像(越狱)
【发布时间】:2013-04-14 11:09:26
【问题描述】:

我正在使用 theos 开发锁屏应用程序,部分功能需要手机上某些应用程序的图标图像。如何获取这些图标图像并将它们显示在手机的锁屏上?

到目前为止,我已经尝试了所有我能想到的方法,并且没有运气搜索过跳板标题。我一直在尝试从我通过谷歌找到的建议中检索 SBApplication 和 SBIconModel 中的图像,但我仍然没有运气。

非常感谢任何帮助。谢谢!

【问题讨论】:

    标签: iphone objective-c jailbreak theos logos


    【解决方案1】:

    在你 %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。

    希望对您有所帮助!有什么问题请留言。

    【讨论】:

    • 如果你越狱了,你也可以ssh进入手机,查看所有*.app文件夹中的Info.plist文件。它们将显示正确的显示标识符(以及图标名称)。 plutil 可用于读取二进制 plist。
    【解决方案2】:

    虽然我接受以上作为答案,但我最终使用了以下代码,它显示了标题和徽章:

    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];
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-11-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多