4

Theos を使用してロック画面アプリケーションを開発しています。機能の一部には、電話上の特定のアプリケーションのアイコン画像が必要です。これらのアイコン画像を取得して、電話のロック画面に表示するにはどうすればよいですか?

これまで考えられることはすべて試しましたが、スプリングボードのヘッダーを検索してもうまくいきませんでした。私は特に、Google で見つけた提案から SBApplication と SBIconModel から画像を取得しようとしましたが、まだ運がありません。

どんな助けでも大歓迎です。ありがとう!

4

2 に答える 2

5

クラスを %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 を取得することです。

この助けを願っています!問題があれば叫んでください。

于 2013-04-21T15:13:54.473 に答える
0

上記を答えとして受け入れますが、タイトルとバッジを表示する次のコードを使用することになりました。

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];
于 2013-08-05T23:18:12.540 に答える