博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
ios是否安装了某应用
阅读量:5172 次
发布时间:2019-06-13

本文共 3530 字,大约阅读时间需要 11 分钟。

分2中情况:

1.越狱之后的设备,可以获取完整的列表,获取也比较方便,方法如下:

 

也有如下代码可以获取:

NSFileManager* fileManager = [NSFileManager defaultManager];
NSMutableArray* applist = [NSMutableArray arrayWithCapacity:10];
for (NSString *path in [fileManager directoryContentsAtPath:@"/var/mobile/Applications"]) {
for (NSString *subpath in [fileManager directoryContentsAtPath:
[NSString stringWithFormat:@"/var/mobile/Applications/%@", path]]) {
if ([subpath hasSuffix:@".app"])
{
NSString* infoplist = [NSString stringWithFormat:@"/var/mobile/Applications/%@/%@/Info.plist", path, subpath];
NSLog(@"sdfsadfa0%@",infoplist);
NSDictionary* dict = [NSDictionary dictionaryWithContentsOfFile:infoplist];
NSLog(@"sdfsadfa1%@",dict);

[applist addObject:[dict objectForKey:@"CFBundleDisplayName"]];

}
}
住:代码运行的目录为/Applications/

**************************************** // Declaration BOOL APCheckIfAppInstalled(NSString*bundleIdentifier);// Bundle identifier (eg. com.apple.mobilesafari) used to track apps // Implementation BOOL APCheckIfAppInstalled(NSString*bundleIdentifier) {
staticNSString*const cacheFileName =@\"com.apple.mobile.installation.plist\"; NSString*relativeCachePath =[[@\"Library\" stringByAppendingPathComponent:@\"Caches\"] stringByAppendingPathComponent: cacheFileName]; NSDictionary*cacheDict =nil; NSString*path =nil; // Loop through all possible paths the cache could be in for(short i =0;1; i++) {
switch(i){
case0:// Jailbroken apps will find the cache here; their home directory is /var/mobile path =[NSHomeDirectory() stringByAppendingPathComponent: relativeCachePath]; break; case1:// App Store apps and Simulator will find the cache here; home (/var/mobile/) is 2 directories above sandbox folder path =[[NSHomeDirectory() stringByAppendingPathComponent:@\"../..\"] stringByAppendingPathComponent: relativeCachePath]; break; case2:// If the app is anywhere else, default to hardcoded /var/mobile/ path =[@\"/var/mobile\" stringByAppendingPathComponent: relativeCachePath]; break; default:// Cache not found (loop not broken) return NO; break;} BOOL isDir = NO; if([[NSFileManager defaultManager] fileExistsAtPath: path isDirectory:&isDir]&&!isDir)// Ensure that file exists cacheDict =[NSDictionary dictionaryWithContentsOfFile: path]; if(cacheDict)// If cache is loaded, then break the loop. If the loop is not \"broken,\" it will return NO later (default: case) break; } NSDictionary*system =[cacheDict objectForKey:@\"System\"];// First check all system (jailbroken) apps if([system objectForKey: bundleIdentifier])return YES; NSDictionary*user =[cacheDict objectForKey:@\"User\"];// Then all the user (App Store /var/mobile/Applications) apps if([user objectForKey: bundleIdentifier])return YES; // If nothing returned YES already, we'll return NO now return NO; }

Here is an example of this, assuming that your app is named "yourselfmadeapp" and is an app in the app store. 

NSArray*bundles2Check =[NSArray arrayWithObjects:@\"com.apple.mobilesafari\",@\"com.yourcompany.yourselfmadeapp\",@\"com.blahblah.nonexistent\",nil]; for(NSString*identifier in bundles2Check) if(APCheckIfAppInstalled(identifier)) NSLog(@\"App installed:%@\", identifier); else NSLog(@\"Appnot installed:%@\", identifier);

Log Output:

2009-01-3012:19:20.250SomeApp[266:20b]App installed: com.apple.mobilesafari 2009-01-3012:19:20.254SomeApp[266:20b]App installed: com.yourcompany.yourselfmadeapp 2009-01-3012:19:20.260SomeApp[266:20b]Appnot installed: com.blahblah.nonexistent

转载于:https://www.cnblogs.com/qq378829867/archive/2012/11/21/2780916.html

你可能感兴趣的文章
Oracle中包的创建
查看>>
关于PHP会话:session和cookie
查看>>
查询数据库锁
查看>>
面试时被问到的问题
查看>>
注解小结
查看>>
201421410014蒋佳奇
查看>>
Xcode5和ObjC新特性
查看>>
CSS属性值currentColor
查看>>
Real-Time Rendering 笔记
查看>>
多路复用
查看>>
【UVA】434-Matty's Blocks
查看>>
hadoop2.2.0+hive-0.10.0完全分布式安装方法
查看>>
使用Reporting Services时遇到的小问题
查看>>
约瑟夫问题
查看>>
Arduino 报错总结
查看>>
树莓派Android Things物联网开发:树莓派GPIO引脚图
查看>>
矩阵快速幂---BestCoder Round#8 1002
查看>>
Hadoop HBase概念学习系列之HBase里的宽表设计概念(表设计)(二十七)
查看>>
awk变量
查看>>
mysql_对于DQL 的简单举例
查看>>