通过Bundle ID 唤醒App

1:查看手机中安装的所有App的包名

(void)GetPackageName{

Class lsawsc = NSClassFromString(@"LSApplicationWorkspace");

NSObject* workspace = [lsawsc performSelector:NSSelectorFromString(@"defaultWorkspace")];

NSArray *Arr = [workspace performSelector:NSSelectorFromString(@"allInstalledApplications")];

for (NSString * tmp in Arr)

{

NSString * bundleid = [self getParseBundleIdString:tmp];

NSLog(@"%@",bundleid);

}

}

(NSString *)getParseBundleIdString:(NSString *)description

{

NSString * ret = @"";

NSString * target = [description description];

// iOS8.0 "LSApplicationProxy: com.apple.videos",

// iOS8.1 " com.apple.videos",

// iOS9.0 " com.apple.PhotosViewService "

if (target == nil)

{

return ret;

}

NSArray * arrObj = [target componentsSeparatedByString:@" "];

switch ([arrObj count])

{

case 2: // [iOS7.0 ~ iOS8.1)

case 3: // [iOS8.1 ~ iOS9.0)

{

ret = [arrObj lastObject];

}

break;

case4:// [iOS9 +){      ret = [arrObj objectAtIndex:2];  }break;default:break;

}

return ret;

}

2:通过准确的包名唤起App

(void)OpenApp{

Class lsawsc = NSClassFromString(@"LSApplicationWorkspace");

#pragmaclang diagnostic push

#pragmaclang diagnostic ignored"-Warc-performSelector-leaks"

NSObject* workspace = [lsawsc performSelector:NSSelectorFromString(@"defaultWorkspace")];

#pragmaclang diagnostic pop

// iOS6 没有defaultWorkspace

if ([workspace respondsToSelector:NSSelectorFromString(@"openApplicationWithBundleID:")])

{

#pragmaclang diagnostic push

#pragmaclang diagnostic ignored"-Warc-performSelector-leaks"

[workspace performSelector:NSSelectorFromString(@"openApplicationWithBundleID:") withObject:@"com.Calendar"];

#pragmaclang diagnostic pop


}

}

你可能感兴趣的:(通过Bundle ID 唤醒App)