android - 如何获取 Android 设备上每个应用程序的类别?

标签 android google-play

我有一个 Android 应用程序,它会扫描设备上安装的所有应用程序,然后将其报告给服务器(它是 MDM 代理)。关于如何获取应用程序的类别有什么建议吗?每个人都有不同的类别列表,但基本上都是游戏、娱乐、工具/实用程序等。

据我所知,设备本身没有存储与类别相关的内容。我正在考虑使用android market API来搜索市场中的应用程序并使用搜索返回的Category值。不确定这会成功找到匹配项。关于如何最好地做到这一点有什么建议吗?

对不同方法有什么建议吗?

提前致谢。 麦克

最佳答案

我知道这是一篇旧帖子,但对于仍在寻找此内容的人来说,API 级别 26 (O) 已向 android.content.pm.ApplicationInfo 添加了类别。

来自文档 https://developer.android.com/reference/android/content/pm/ApplicationInfo#category :

public int category

The category of this app. Categories are used to cluster multiple apps together into meaningful groups, such as when summarizing battery, network, or disk usage. Apps should only define this value when they fit well into one of the specific categories.

Set from the R.attr.appCategory attribute in the manifest. If the manifest doesn't define a category, this value may have been provided by the installer via PackageManager#setApplicationCategoryHint(String, int). Value is CATEGORY_UNDEFINED, CATEGORY_GAME, CATEGORY_AUDIO, CATEGORY_VIDEO, CATEGORY_IMAGE, CATEGORY_SOCIAL, CATEGORY_NEWS, CATEGORY_MAPS, or CATEGORY_PRODUCTIVITY

现在可以执行以下操作:

PackageManager pm = context.getPackageManager();
ApplicationInfo applicationInfo = pm.getApplicationInfo(packageName, 0);
if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.O) {
    int appCategory = applicationInfo.category;
    String categoryTitle = (String) ApplicationInfo.getCategoryTitle(context, appCategory)
    // ...
}

关于android - 如何获取 Android 设备上每个应用程序的类别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61444936/

相关文章:

android - 如何保护存储在 Android APK 中的 Assets

android - 将快照监听器添加到集合 Firestore

android - 当第一个 Android keystore 证书过期时会发生什么?

Android App Transfer 找不到交易 ID

android - Google Play 控制台 - 在封闭轨道之间切换

android - 安装测试版 .apk 后安装生产 .apk

android - 是否可以从 Assets 目录中的 xml 文件创建 View ?

android - 用xcode开发android应用

java - (Rest Api)回收器 View ,在android中的每行中带有接受和拒绝请求按钮

android - 在不干扰已发布的 APK 的情况下上传草稿 APK?