public static ArrayList getAllAppInfo(Context context,boolean systemApp) {
ArrayList appBeanList = new ArrayList<>();
AppInfo bean = null;
PackageManager packageManager = context.getPackageManager();
List<PackageInfo> list = packageManager.getInstalledPackages(0);
for (PackageInfo p : list) {
bean = new AppInfo();
bean.setIconId(p.applicationInfo.loadIcon(packageManager));
bean.setIconName(packageManager.getApplicationLabel(p.applicationInfo).toString());
bean.setClassName(p.applicationInfo.className);
bean.setActivityName(p.applicationInfo.manageSpaceActivityName);
// Log.d("angelo", "angelo label " + p.applicationInfo.labelRes);
// if(p.applicationInfo.labelRes != 0) {
// bean.setPackageName(context.getResources().getString(p.applicationInfo.labelRes));
// }
String applicationName =
(String) packageManager.getApplicationLabel(p.applicationInfo);
bean.setPackageName(applicationName);
int flags = p.applicationInfo.flags;
if ((flags & ApplicationInfo.FLAG_SYSTEM) != 0&&systemApp) {
bean.setSystemApp(true);
} else {
appBeanList.add(bean);
}
}
return appBeanList;
}
可以根据包名去重
不知道你这个问题是否已经解决, 如果还没有解决的话:这个听说是谷歌应用市场的排名规则
1、 Downloads (下载量)
2、 App quality (应用质量,保留率)
3、Frequency of interaction with the app (使用频率)
4、Uninstalls (卸载量)
5、Number and quality of ratings and comments (打5星,好评数)
6、Keyword density (关键词密度)
7、Social ‘proof’(社会认同)
8、Number of backlinks (反向链接数)
9、关键词搜索发现应用占的比例很高
重申一次,上面不一定就对了,每个应用市场的规则,但这些至少可以给需要的人多一些参考。
为了过滤掉子功能应用,只显示主模块的应用,可以按照以下步骤实现:
首先,需要使用适当的方法获取系统中所有应用的列表。具体的方法取决于你的应用开发环境和技术栈。例如,在Android开发中,可以使用PackageManager类的getInstalledApplications()方法获取已安装应用的列表。
示例代码(Java/Android):
PackageManager pm = getPackageManager();
List<ApplicationInfo> applications = pm.getInstalledApplications(0);
对获取的应用列表进行遍历,判断应用是否为主模块的应用。具体判断的规则可能因应用类型和需求而有所不同。根据你给出的问题描述,假设主模块的应用与子功能应用的名称或包名有所区别,可以根据这些信息进行过滤。
示例代码(Java/Android):
List<ApplicationInfo> mainModuleApplications = new ArrayList<>();
for (ApplicationInfo application : applications) {
if (isMainModuleApplication(application)) {
mainModuleApplications.add(application);
}
}
其中,isMainModuleApplication()方法根据主模块应用与子功能应用的区别进行逻辑判断,返回true表示是主模块应用,返回false表示是子功能应用。
将过滤后的主模块应用列表展示给用户。具体的展示方式取决于你的应用设计和需求。可以使用列表控件或其他合适的界面元素进行展示。
示例代码(Java/Android):
// 在适当的界面布局中添加一个列表控件(例如ListView或RecyclerView)
ListView mainModuleAppListView = findViewById(R.id.mainModuleAppListView);
// 创建一个Adapter并设置给列表控件,用于显示主模块应用列表
MainModuleAppAdapter adapter = new MainModuleAppAdapter(mainModuleApplications);
mainModuleAppListView.setAdapter(adapter);
其中,MainModuleAppAdapter是一个自定义的Adapter,继承自BaseAdapter或RecyclerView.Adapter,用于将主模块应用列表中的数据绑定到列表控件的每一项上。
综上所述,以上是实现过滤掉子功能应用、只显示主模块应用的一种解决方案。具体的实现细节和代码可能因你的应用开发环境和技术栈而有所不同,需要根据实际情况进行调整和完善。