第三方应用启动时LibStatusBar图标消失

152

我为Cydia编写了一个插件,它会在状态栏上添加一个图标。 在主屏幕和启动SpringBoard时,它都能正常工作,而且如果已经启动了应用程序,它也能正常工作, 但是,如果关闭(完全关闭)某个应用程序(如Facebook或Twitter),并且图标正在显示,则在启动该应用程序时,它将导致该图标消失。 使用以下代码使用libStatusBar显示图标:

if(icon) // if icon needs to be removed
{
    [icon release];
    icon = nil;
}

...

// add the icon to the status bar
icon = [[%c(LSStatusBarItem) alloc] initWithIdentifier:[NSString stringWithFormat:@"muteIconLablabla"] alignment:StatusBarAlignmentRight];
icon.imageName = [NSString stringWithFormat:@"Mute"];

我也尝试使用在libStatusBar自述文件中提出的方法。

[[UIApplication sharedApplication] addStatusBarImageNamed:@"ON_Mute"]; // and removeStatusBarImageNamed:...

我尝试重写-(id)init并在其中更新图标,但结果相同。

上述代码是从一个static void函数调用的。例如,这个函数被多次调用,比如在%hook SpringBoard下的-(void)applicationDidFinishLaunching:(id)application-(void)ringerChanged:(int)changed中。

全部位于Tweak.xm中。 该问题在中也会发生。

1个回答

2

我已经有一段时间没有使用libstatusbar了,但是如果你确信LSStatusBarItem没有被释放,那么它可能被Springboard或其他应用程序隐藏了。考虑显式地设置icon.visible = YES。你还可以考虑通过调用[item setHidesTime:NO]来显式地在LSStatusBarServer上设置timeHiddenNO

此外,如果你没有对图标进行任何更改,请将icon.manualUpdate = NO设置为否。

参考文献:


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接