Получить изображение значка приложения из Springboard (Jailbreak)

Я разрабатываю приложение для блокировки экрана, используя теос, и часть функциональности требует изображения значков определенных приложений на телефоне. Как я могу получить эти изображения значков и отобразить их на экране блокировки телефона?

Я перепробовал все, что только мог придумать, и безуспешно искал заголовки трамплина. Я специально пытался получить изображения из SBApplication и SBIconModel из предложений, которые я нашел через Google, но все же мне не повезло.

Любая помощь с благодарностью. Спасибо!

2 ответа

Решение

После того, как вы перехватите класс% внутри используемого вами метода, сделайте следующее, если, например, вы пытаетесь получить значок для почтового приложения

// 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];
Другие вопросы по тегам