iOS 获取已安装 的APP

时间:2023-02-14 14:11:27
-(void)getAppPlist
{
Class LSApplicationWorkspace_class = objc_getClass("LSApplicationWorkspace");
NSObject* workspace = [LSApplicationWorkspace_class performSelector:@selector(defaultWorkspace)]; NSArray*apps = [workspace performSelector:@selector(allApplications)]; NSMutableArray*appsIconArr = [NSMutableArray array]; NSMutableArray*appsNameArr = [NSMutableArray array]; NSLog(@"apps: %@",apps ); [apps enumerateObjectsUsingBlock:^(id obj,NSUInteger idx,BOOL* stop) { NSDictionary*boundIconsDictionary = [obj performSelector:@selector(boundIconsDictionary)]; NSString*iconPath = [NSString stringWithFormat:@"%@/%@.png", [[obj performSelector:@selector(resourcesDirectoryURL)]path], [[[boundIconsDictionary objectForKey:@"CFBundlePrimaryIcon"]objectForKey:@"CFBundleIconFiles"]lastObject]]; UIImage*image = [[UIImage alloc]initWithContentsOfFile:iconPath]; id name = [obj performSelector:@selector(localizedName)]; if(image) { [appsIconArr addObject:image]; [appsNameArr addObject: name]; } NSLog(@"iconPath = %@", iconPath); NSLog(@"name = %@", name); NSLog(@"%@",[self properties_aps:obj]); NSLog(@"_____________________________________________\n");
}]; } - (NSDictionary *)properties_aps:(id)objc { NSMutableDictionary *props = [NSMutableDictionary dictionary]; unsigned int outCount, i; objc_property_t *properties = class_copyPropertyList([objc class], &outCount); for (i = ; i<outCount; i++) { objc_property_t property = properties[i]; const char* char_f =property_getName(property); NSString *propertyName = [NSString stringWithUTF8String:char_f]; id propertyValue = [objc valueForKey:(NSString *)propertyName]; if (propertyValue) [props setObject:propertyValue forKey:propertyName]; } free(properties); return props; }