是否有办法(某些API)获取iPhone设备上已安装应用的列表。
在搜索类似的问题时,我发现了一些与url registration
相关的内容,但我认为必须有一些API来执行此操作,因为我不想对应用程序做任何事情,我只是想要清单。
答案 0 :(得分:17)
不,应用程序是沙盒,Apple接受的API不包含任何可以让您这样做的内容。
但是,您可以测试是否安装了某个应用:
[[UIApplication sharedApplication] canOpenURL:[NSURL URLWithString:@"thisapp://foo"]
您可以从here获取应用和网址方案列表。
答案 1 :(得分:4)
对于越狱设备,您可以使用下一段代码:
-(void)appInstalledList
{
static NSString* const path = @"/private/var/mobile/Library/Caches/com.apple.mobile.installation.plist";
NSDictionary *cacheDict = nil;
BOOL isDir = NO;
if ([[NSFileManager defaultManager] fileExistsAtPath: path isDirectory: &isDir] && !isDir)
{
cacheDict = [NSDictionary dictionaryWithContentsOfFile: path];
NSDictionary *system = [cacheDict objectForKey: @"System"]; // First check all system (jailbroken) apps
for (NSString *key in system)
{
NSLog(@"%@",key);
}
NSDictionary *user = [cacheDict objectForKey: @"User"]; // Then all the user (App Store /var/mobile/Applications) apps
for (NSString *key in user)
{
NSLog(@"%@",key);
}
return;
}
NSLog(@"can not find installed app plist");
}
答案 2 :(得分:3)
对于非越狱设备,我们可以使用被称为“ ihaspp ”的第三方框架,也是免费和苹果接受的。他们还提供了如何集成和如何使用的良好文档。可能这对你有帮助。祝你好运!!
答案 3 :(得分:2)
嗯,不确定在给出最后一个答案时是否可以恢复(iOS 6之前) 另外这个是时间密集的,但很简单: 进入设置> Gen.>用法。目前至少使用的第一类是存储。
它会显示部分应用列表。在此部分列表的底部是一个显示“显示所有应用”的按钮。 点击它,你将不得不通过屏幕浏览,并截取屏幕截图(快速锁定按钮和主页按钮截图)。 我现在正在这样做,我的iPhone上有数百个应用程序。所以这需要我一段时间。但至少在这个过程结束时,我将拥有所有应用程序的图像。
答案 4 :(得分:1)
您可以使用以下方法执行此操作:
Class LSApplicationWorkspace_class = objc_getClass("LSApplicationWorkspace");
SEL selector = NSSelectorFromString(@"defaultWorkspace");
NSObject* workspace = [LSApplicationWorkspace_class performSelector:selector];
SEL selectorALL = NSSelectorFromString(@"allApplications");
NSMutableArray *Allapps = [workspace performSelector:selectorALL];
NSLog(@"apps: %@", Allapps);
然后通过访问每个元素并将其拆分,您可以获得您的应用名称,甚至是Bundle Identifier。