iOS 获取已安装 的APP

-(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(@"_____________________________________________
");
    }];
    

}



- (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;
    
}
原文地址:https://www.cnblogs.com/qingjoin/p/4950392.html