直接贴代码
Class LSApplicationWorkspace_class = objc_getClass("LSApplicationWorkspace");
NSObject* workspace = [LSApplicationWorkspace_class performSelector:@selector(defaultWorkspace)];
// NSLog(@"apps: %@", [workspace performSelector:@selector(allApplications)]);
NSArray *apps = [workspace performSelector:@selector(allApplications)];
NSMutableArray *appsIconArr = [NSMutableArray array];
NSMutableArray *appsNameArr = [NSMutableArray array];
[apps enumerateObjectsUsingBlock:^(id obj, NSUInteger idx, BOOL *stop) {
NSDictionary *boundIconsDictionary = [obj performSelector:@selector(boundIconsDictionary)];
NSString *iconPath = [NSString stringWithFormat:@"%@/%@.png", [[obj performSelector:@selector(resourcesDirectoryURL)] path], [[[boundIconsDictionaryobjectForKey:@"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(@"_____________________________________________\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 = 0; 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;
}