2012-03-24 2 views
4

Gibt es eine einfachere Möglichkeit, den Pfad zu einer iOS-Anwendung abzurufen, als nach /var/mobile/Applications zu suchen?Pfad zur iOS-Anwendung basierend auf Name oder Paket-ID abrufen

Ich kenne sowohl den Namen als auch die Bundle-ID, jedoch ist der Pfad auf verschiedenen iOS-Geräten nicht konsistent.

Dies ist für den Einsatz in einem Jailbreak-Tweak, so dass ich PrivateFrameworks und anderen Code verwenden kann, der von Apple nicht erlaubt ist.

Antwort

4

Wenn Sie Code ausführen, der in Springboard ausgeführt wird, sollte dies ziemlich einfach sein. Holen SBApplicationController 's sharedInstance, dann erhalten Sie die SBApplication Sie mit der applicationWithDisplayIdentifier: Methode suchen (oder mit welcher Methode auch immer Sie wählen). Die SBApplication Klasse enthält Eigenschaften für path, containerPath und bundle (neben vielen anderen), von denen einer nach was Sie suchen sollten. Ich habe das selbst nicht ausprobiert, daher kann ich nicht garantieren, dass es funktioniert, aber basierend auf einem kurzen Blick auf die Springboard-Header-Dateien (Sie können einen Blick auf here werfen, oder die Header-Dateien selbst ablegen), sollte es funktionieren.

Auf der anderen Seite, wenn Sie nicht von Springboard laufen (dh wenn Sie eine tatsächliche App Store-style-Anwendung machen), dann können Sie Pech haben. Du könntest mit Springboard interprozessuale Kommunikation suchen und sehen, ob dort etwas gemacht werden kann, aber es wäre wahrscheinlich mehr Ärger als es wert ist.

+0

Siehe [iPhoneDevWiki] (http://iphonedevwiki.net/index.php/SBAapplication) – Spookbuster

3

Wenn in einer App ausgeführt wird, können Sie definieren:

extern NSString* SBSCopyBundlePathForDisplayIdentifier(NSString* bundleId); 

und Link zu den SpringboardServices Rahmen.

2

Oder Sie können die Bibliothek AppList verwenden und dann ist es:

ALApplicationList *al = [ALApplicationList sharedApplicationList]; 
NSString *appPath = [al valueForKey:@"path" forDisplayIdentifier:bundleID]; 

In diesem Fall ist es tut, was Andrew R. für Sie in seiner Antwort erwähnt. (Ich nehme an, die gleichen Anforderungen sind notwendig, d. H. Müssen von Springboard ausgeführt werden.)

Verwandte Themen