Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Get list of all installed apps

Tags:

I would like to get a list of all installed apps(NSArray). My app is a jailbreak app and is located in/Applications so Sandbox is no problem there. Is there any way to get a list of app store apps? I've already seen this in other apps (Activator, SBSettings...). I have no idea how to do this, because all of the apps sandboxes have that huge code, so i don't know how it would be possible to access the .app folder inside the sandbox.

like image 406
JonasG Avatar asked Aug 29 '11 05:08

JonasG


2 Answers

You can use this code snippet:

 #import "InstalledAppReader.h"  static NSString* const installedAppListPath = @"/private/var/mobile/Library/Caches/com.apple.mobile.installation.plist";  @interface InstalledAppReader()  -(NSArray *)installedApp; -(NSMutableDictionary *)appDescriptionFromDictionary:(NSDictionary *)dictionary;  @end   @implementation InstalledAppReader  #pragma mark - Init -(NSMutableArray *)desktopAppsFromDictionary:(NSDictionary *)dictionary {     NSMutableArray *desktopApps = [NSMutableArray array];      for (NSString *appKey in dictionary)     {         [desktopApps addObject:appKey];     }     return desktopApps; }  -(NSArray *)installedApp {         BOOL isDir = NO;     if([[NSFileManager defaultManager] fileExistsAtPath: installedAppListPath isDirectory: &isDir] && !isDir)      {         NSMutableDictionary *cacheDict = [NSDictionary dictionaryWithContentsOfFile: installedAppListPath];         NSDictionary *system = [cacheDict objectForKey: @"System"];         NSMutableArray *installedApp = [NSMutableArray arrayWithArray:[self desktopAppsFromDictionary:system]];          NSDictionary *user = [cacheDict objectForKey: @"User"];          [installedApp addObjectsFromArray:[self desktopAppsFromDictionary:user]];          return installedApp;     }      DLOG(@"can not find installed app plist");     return nil; }  @end 
like image 59
Igor Avatar answered Sep 16 '22 16:09

Igor


On jailbroken iPhones, you can just read the /Applications folder. All installed applications go there. Just list the directories in /Applications using NSFileManager:

NSArray *appFolderContents = [[NSFileManager defaultManager] directoryContentsAtPath:@"/Applications"]; 
like image 25
Björn Marschollek Avatar answered Sep 19 '22 16:09

Björn Marschollek