安卓App应用采集

281 阅读1分钟

1.创建加载应用程序信息的意图(Intent)

val intent = Intent(Intent.ACTION_MAIN, null)
intent.addCategory(Intent.CATEGORY_LAUNCHER)

这个意图的目的是获取所有启动器(Launcher)应用的信息。ACTION_MAIN 表示主操作,CATEGORY_LAUNCHER 表示该应用是一个启动器应用。

2.查询应用信息

private lateinit var pm: PackageManager //包管理器
pm = mContext.packageManager
val appInfo = pm.queryIntentActivities(intent, 0)

使用 pm.queryIntentActivities 方法查询符合给定意图的所有活动(activities)信息。这里的 pm 是一个 PackageManager 对象,用于获取包管理相关信息。

3.遍历应用信息列表

appInfo.forEachIndexed { _, resolveInfo ->
    // 处理每个应用程序的信息
}

4.构建应用程序数据对象

data class AppData(
    val packName: String,
    val appName: String,
    val appIcon: Drawable,
    val firstRunName: String,
    val isSystemApp: Boolean
)
val appData = AppData(
    resolveInfo.activityInfo.packageName,
    resolveInfo.loadLabel(pm) as String,
    resolveInfo.loadIcon(pm),
    resolveInfo.activityInfo.name,
    (resolveInfo.activityInfo.flags and ApplicationInfo.FLAG_SYSTEM) > 0
)

对每个应用程序,创建一个 AppData 对象,并将其添加到 mAllAppList 列表中。AppData 对象包含了应用的包名、标签(应用名称)、图标、活动名称和一个标志,该标志表示应用是否为系统应用。