如何检测iOS里安装的其它软件?

来源:互联网 发布:窦靖童唱功知乎 编辑:程序博客网 时间:2024/05/22 00:42
第一种方法:
NSURL *instagramURL = [NSURL URLWithString:@"instagram://location?id=1"];

BOOL hasInstagram = [[UIApplication sharedApplication] canOpenURL:instagramURL];


第二种方法:


// .h

 

@interface UIDevice (ProcessesAdditions)

- (NSArray *)runningProcesses;

@end

 

// .m

#import <sys/sysctl.h>

 

@implementation UIDevice(ProcessesAdditions)

 

- (NSArray *)runningProcesses {

 

       intmib[4] = {CTL_KERN, KERN_PROC, KERN_PROC_ALL, 0};

       size_tmiblen = 4;

      

       size_tsize;

       intst = sysctl(mib, miblen, NULL, &size, NULL, 0);

      

       structkinfo_proc * process = NULL;

       structkinfo_proc * newprocess = NULL;

      

   do {

             

       size += size / 10;

       newprocess = realloc(process, size);

             

       if (!newprocess){

                    

           if (process){

                free(process);

            }

                    

           return nil;

       }

             

       process = newprocess;

       st = sysctl(mib, miblen, process, &size, NULL, 0);

             

    }while (st == -1 && errno == ENOMEM);

      

       if(st == 0){

             

              if(size % sizeof(struct kinfo_proc) == 0){

                     intnprocess = size / sizeof(struct kinfo_proc);

             

                     if(nprocess){

                    

                            NSMutableArray* array = [[NSMutableArray alloc] init];

      

                            for(int i = nprocess - 1; i >= 0; i--){

             

                                   NSString* processID = [[NSString alloc] initWithFormat:@"%d", process[i].kp_proc.p_pid];

                                   NSString* processName = [[NSString alloc] initWithFormat:@"%s",process[i].kp_proc.p_comm];

             

                                   NSDictionary* dict = [[NSDictionary alloc] initWithObjects:[NSArrayarrayWithObjects:processID, processName, nil]

                                                                                                                              forKeys:[NSArrayarrayWithObjects:@"ProcessID", @"ProcessName", nil]];

                                   [processIDrelease];

                                   [processNamerelease];

                                   [arrayaddObject:dict];

                                   [dictrelease];

                            }

      

                            free(process);

                            return[array autorelease];

                     }

              }

       }

      

       returnnil;

}

 

@end

 

// Example usage.

NSArray * processes = [[UIDevicecurrentDevice] runningProcesses];

for (NSDictionary * dict in processes){

       NSLog(@"%@- %@", [dict objectForKey:@"ProcessID"], [dictobjectForKey:@"ProcessName"]);

}


0 0
原创粉丝点击