获取所有安装的应用程序列表

我想获得所有安装的应用程序(NSArray)的列表。 我的应用程序是一个越狱应用程序,位于/应用程序,所以沙箱在那里没有问题。 有什么办法可以得到应用程序商店应用程序的列表吗? 我已经看到在其他应用程序(Activator,SBSettings …)。 我不知道如何做到这一点,因为所有的应用程序沙箱有这么大的代码,所以我不知道如何才能访问沙箱内的.app文件夹。

你可以使用这个代码片段:

#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 

在越狱的iPhone上,您只能阅读/Applications文件夹。 所有已安装的应用程 只需使用NSFileManager列出/Applications中的目录NSFileManager

 NSArray *appFolderContents = [[NSFileManager defaultManager] directoryContentsAtPath:@"/Applications"]; 

经过一番研究,我find了一个名为iHasApp的框架。 这是一个很好的解决scheme,返回一个字典与应用程序名称,标识符和图标: 找出什么应用程序安装

还有一个AppList library ,它会为你做所有的肮脏的工作: rpetrich / AppList它在很多越狱的调整中使用,所以我不知道为什么它没有build议在这里。

获取AppStore应用程序的一种方法是检查列表中返回的每个应用程序的isSystemApplication的值。 那些值设置为NO是常规的AppStore应用程序。 还有一个函数applicationsFilteredUsingPredicate:predicate ,所以也许甚至可以事先过滤列表。