iOS 获取手机安装的应用列表
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了iOS 获取手机安装的应用列表相关的知识,希望对你有一定的参考价值。
参考技术A - (void)getIphoneAllApplicationsClassLSApplicationWorkspace_class =objc_getClass("LSApplicationWorkspace");
NSObject* workspace = [LSApplicationWorkspace_classperformSelector:@selector(defaultWorkspace)];
NSArray*apps= [workspaceperformSelector:@selector(allApplications)];
ClassLSApplicationProxy_class =objc_getClass("LSApplicationProxy");
for(inti =0; i < apps.count; i++)
NSObject*temp = apps[i];
if([tempisKindOfClass:LSApplicationProxy_class])
//应用的bundleId
NSString*appBundleId = [tempperformSelector:NSSelectorFromString(@"applicationIdentifier")];
//应用的名称
NSString *appName = [temp performSelector:NSSelectorFromString(@"localizedName")];
//应用的类型是系统的应用还是第三方的应用
NSString * type = [temp performSelector:NSSelectorFromString(@"applicationType")];
//应用的版本
NSString* shortVersionString = [tempperformSelector:NSSelectorFromString(@"shortVersionString")];
NSString* resourcesDirectoryURL = [tempperformSelector:NSSelectorFromString(@"containerURL")];
NSLog(@"类型=%@应用的BundleId=%@ ++++应用的名称=%@版本号=%@\n%@",type,appBundleId,appName,shortVersionString,resourcesDirectoryURL);
- (BOOL)isInstalled:(NSString *)bundleId
NSBundle *container = [NSBundle bundleWithPath:@"/System/Library/PrivateFrameworks/MobileContainerManager.framework"];
if ([container load])
Class appContainer = NSClassFromString(@"MCMAppContainer");#pragmaclang diagnostic push#pragmaclang diagnostic ignored "-Wundeclared-selector"idcontainer = [appContainer performSelector:@selector(containerWithIdentifier:error:) withObject:bundleId withObject:nil];#pragmaclang diagnostic pop NSLog(@"%@", [container performSelector:@selector(identifier)]);
if (container)
return YES;
else
return NO;
return NO;
是否可以在ios中获取已安装的应用程序
【中文标题】是否可以在ios中获取已安装的应用程序【英文标题】:Is it possible to get installed apps in ios 【发布时间】:2018-03-06 07:48:28 【问题描述】:是否可以在 iOS 11 中以编程方式获取正在运行/已安装的应用程序列表。如果有人知道答案,请帮助我。我搜索了许多网站以寻找答案,大多数网站显示这是不可能的。请帮助我
【问题讨论】:
“他们中的大多数都表明这是不可能的” - 你想再听到同样的答案吗? Apple 不会允许...如果您使用任何私人/第三方库,那么请忘记 App Store! 那么第三方启动器应用程序在 iphone 中是如何工作的??????@luk2302 【参考方案1】:好的,您无法获得所有应用程序,但您可以通过不同的方式完成您的任务。 App Store 上有一个名为 Carat 的应用程序,其中列出了消耗电池的应用程序。这是该应用程序的 GitHub 链接
Carat
也许对你有帮助
【讨论】:
【参考方案2】:您可以使用 AppList 库来获取所有已安装应用程序的列表。 它使用私有框架,因此它也只能越狱。查看https://github.com/rpetrich/AppList。
或
您还可以阅读 /Applications 文件夹。所有已安装的应用程序都在其中可用。您需要使用 NSFileManager 列出 /Applications 中的目录:
NSArray *appFolderContents = [[NSFileManager defaultManager] directoryContentsAtPath:@"/Applications"];
【讨论】:
Applications 文件夹仅包含系统应用程序,因此您不会在此处找到有关从 App Store 下载的应用程序的任何信息。 Store App 的二进制文件存储在/var/mobile/Containers/Bundles
,相关数据存储在/var/mobile/Containers/Data
。
如果您无法获取已安装应用程序的列表,您也可以尝试以下代码。这里我使用了私有框架,但它不是越狱设备。#include 以上是关于iOS 获取手机安装的应用列表的主要内容,如果未能解决你的问题,请参考以下文章
安卓Launcher之获取手机安装的应用列表,安卓launcher
使用Application Loader 3.0 上传ios手机应用安装文件一般步骤
如何创建与每个已安装的 android 应用程序(在用户手机上)关联的活动(android 类)的列表(文件名、位置)?