我找不到在iOS的NSRunningApplication
(公共或私營)5.0頭(我敢肯定,我到處檢查,但我可能是錯的...)
很可能有多種方式來做到這一點,但這些應該工作一個...
首先,獲取有關正在運行的進程信息。如果你不能得到包ID,但是可以獲取到的應用程序的路徑,那麼這是夠好。你可以這樣做,在幾個方式之一:
1)See this answer on stack overflow也許this one。我不確定這些技術的可執行路徑是否可用...我沒有深入探索它們。
2)您可以打通ps
shell命令的過程信息。例如,在命令行ps -Aef
命令:
iPhone4:~/Applications/8AA99EA8-9CFC-4C17-9BD1-7C2812EDAAD4/Starbucks.app mobile$ ps -Aef
UID PID PPID C STIME TTY TIME CMD
501 281 1 0 0:00.00 ?? 1:02.39 /Applications/MobilePhone.app/MobilePhone
501 282 1 0 0:00.00 ?? 2:26.40 /Applications/MobileMail.app/MobileMail
501 479 1 0 0:00.00 ?? 5:45.01 /Applications/MobileSafari.app/MobileSafari
501 490 1 0 0:00.00 ?? 0:45.62 /Applications/Music~iphone.app/Music~iphone
501 912 1 0 0:00.00 ?? 0:17.65 /var/mobile/Applications/8AA99EA8-9CFC-4237-9BD1-7C2812AAAAD4/Starbucks.app/Starbucks
501 1933 1 0 0:00.00 ?? 0:51.72 /var/mobile/Applications/9962D9AE-087C-4D2E-A6AB-151230DBCDB09/Skype.app/Skype
501 2106 1 0 0:00.00 ?? 1:11.68 /var/mobile/Applications/20DCED79-B1EE-48F4-B3E1-75E9C25A0908C/Netflix.app/Netflix
501 2259 1 0 0:00.00 ?? 0:03.83 /Applications/Stocks.app/Stocks
501 2292 1 0 0:00.00 ?? 0:07.05 /var/mobile/Applications/33713030-9D3D-4BAC-8182-282973B2E5E0/ZillowMap.app/ZillowMap
501 2568 1 0 0:00.00 ?? 0:12.91 /var/mobile/Applications/55216130-10D8-498C-B477-AD18A4982E18/eBay.app/eBay
501 2587 1 0 0:00.00 ?? 0:05.10 /var/mobile/Applications/2A8DEAAD-8244-45C0-BEA9-20DA290B0117/Moviefone.app/Moviefone
我刪除了一些輸出,但是你可以看到一些應用程序運行(*。應用程序)。
所以,在你的應用程序,你可以運行"ps -Aef >> /var/mobile/Library/MyAppName/ps.txt"
有system
或exec
呼叫,發送輸出到一個臨時文件。然後,解析該文件以獲取結果。
3)我還在網上找到了Darwin開源的一個副本,並且將它收集了一小點,將這種數據收集到C字符串緩衝區中,可以通過編程方式進行解析。這裏獲得頭和.c文件:
darwin.c
darwin.h
在您的Xcode項目,#include "darwin.h"
包括兩個文件。然後,使用它像這樣:
OS_initialize();
size_t buffSize = 20000; // you may need to increase this!
char buffer[buffSize];
int bytes = OS_get_table(buffer, buffSize);
if (bytes > 0) {
self.textView.text = [NSString stringWithCString: buffer encoding: NSASCIIStringEncoding];
}
現在,你有應用的安裝位置,打通信息。在這些目錄下的plist
NSString* filename = @"/var/mobile/Applications/8AA99EA8-9CFC-4237-9BD1-7C2812EDAAD4/Starbucks.app/Info.plist";
NSDictionary* dict =
[[NSDictionary alloc] initWithContentsOfFile: filename];
NSString* bundleID = [dict valueForKey: @"CFBundleIdentifier"];
並讀取它們的包ID。
爲了使這項工作,您可能需要獲得你的應用程序root權限。
See here on how to do that。
我收到了嗎 - 您想以編程方式在另一個應用程序中啓動後臺運行應用程序嗎?如果是這樣,我懷疑這是可能的,肯定它是被禁止的。 – 2012-07-20 06:40:36
正確的,以及我忘了提我試圖創建一個越獄調整,所以也許它的可能嗎? – 2012-07-20 06:50:31
所以,你做了越獄設備上的應用?將會破壞設備安全性和聲譽的應用程序?以防萬一你聽到有經驗的開發人員建議 - 離開這個黃昏的工作。 – 2012-07-20 07:02:35