如何在Android Studio项目中区分设备已安装的社交应用与游戏应用
需求可实现性说明
该需求完全可以实现,主流Android应用分发平台的应用分类功能均基于同类逻辑开发落地,以下是几种可直接复用的实现思路。
实现思路汇总
调用系统自带应用分类属性(适配Android 8.0及以上版本)
Android API 26版本开始为ApplicationInfo类新增了category字段,系统会自动为已安装应用打官方分类标签,其中游戏类对应常量CATEGORY_GAME,社交媒体类对应常量CATEGORY_SOCIAL,直接读取该字段即可完成分类,开发成本最低。
核心代码示例:val packageManager = context.packageManager // 获取设备所有已安装应用信息 val installedAppList = packageManager.getInstalledApplications(PackageManager.GET_META_DATA) for (appInfo in installedAppList) { when(appInfo.category) { ApplicationInfo.CATEGORY_GAME -> 归入游戏类集合 ApplicationInfo.CATEGORY_SOCIAL -> 归入社交媒体类集合 else -> 归入其他类集合 } }方案优缺点:实现逻辑最简单,分类结果有官方背书、基础准确度有保障;仅支持Android 8.0及以上系统,小众应用的分类标签可能存在偏差。
本地维护包名分类映射表
提前收集国内/目标地区主流社交媒体、游戏类应用的包名,存储到本地的JSON配置文件或者本地数据库中,获取已安装应用的包名后直接匹配映射表完成分类。
方案优缺点:分类准确率极高,兼容所有Android版本;需要人工定期维护更新包名映射表,无法覆盖所有冷门小众应用。多规则组合校验(高准确率方案)
可以将以上两种方案组合使用,优先读取系统自带的category字段做第一层分类,未匹配到对应分类的应用再查询本地包名映射表做第二层匹配,仍未匹配的可以额外结合应用名称关键词(比如名称带“游戏”“直播”“社交”等关键词做兜底判断),兼顾开发成本和分类准确率。
内容的提问来源于stack exchange,提问作者Leandrei Santos
相关产品推荐
相关产品推荐

