2014-02-04 6 views
0

Мой вопрос отличается от других, потому что я кодирую вредоносную среду. Метод, который я редактирую, принадлежит SpringBoard и создает системные изменения во всех приложениях. С помощью этой команды:Получить активный идентификатор приложения

[[NSBundle mainBundle] bundleIdentifier] 

Только приносит SpringBoard, так как этот метод принадлежит SpringBoard. Итак, есть ли способ узнать, какое приложение активно перед SpringBoard?

ответ

0

Вещи намного проще, чем вы думаете. Я узнал, что это дает ответ:

SBApplication *front = [[objc_getClass("SpringBoard") sharedApplication] _accessibilityFrontMostApplication]; 
NSString *runner = front.bundleIdentifier; 
0

Метод -(NSString*)topApplication в классе BKSWorkspace, который возвращает идентификатор связки самого верхнего приложения. Чтобы получить действительный экземпляр BKSWorkspace, вам необходимо подключить его метод -(id)init, чтобы сохранить и сохранить экземпляр для себя. SpringBoard хранит эти экземпляры таким образом, что вы не можете получить к ним доступ без подключения init.

+0

Я предполагаю, что это сработает, но init не нужен. Я сделал это: 'SBApplication * front = [[objc_getClass (« SpringBoard ») sharedApplication] _accessibilityFrontMostApplication]; NSString * runner = front.bundleIdentifier; ' – isklikas

Смежные вопросы