You need to enable JavaScript to run this app. 如何在Kotlin中构造含模拟数据的Android PackageInfo对象列表
优惠活动
大模型
产品
解决方案
定价
更多

如何在Kotlin中构造含模拟数据的Android PackageInfo对象列表

构造Android PackageInfo模拟数据的实现方案

实现思路

  • 由于你需要通过packageInfoItem.applicationInfo.packageName获取包名,核心需要给PackageInfo的applicationInfo成员构造有效实例,给ApplicationInfo的packageName字段赋值目标包名即可
  • 其余未用到的PackageInfo字段可留空或赋默认值,不影响目标调用逻辑

完整实现代码

val packages = listOf(
    PackageInfo().apply {
        // 构造模拟的ApplicationInfo
        applicationInfo = ApplicationInfo().apply {
            packageName = "com.example.test.app1" // 替换为你需要的模拟包名
            // 其他需要用到的ApplicationInfo属性可在此补充
        }
        // 可选:补充其他PackageInfo属性
        packageName = "com.example.test.app1"
        firstInstallTime = System.currentTimeMillis() - 86400000 // 模拟1天前安装
        lastUpdateTime = System.currentTimeMillis()
    },
    // 可继续添加更多模拟应用数据
    PackageInfo().apply {
        applicationInfo = ApplicationInfo().apply {
            packageName = "com.example.test.app2"
        }
        packageName = "com.example.test.app2"
    }
)

调用验证

packages.forEach { packageInfoItem ->
    val packageName = packageInfoItem.applicationInfo.packageName
    // 可正常拿到模拟的包名做后续逻辑
}

单元测试场景特殊说明

如果是在本地JVM跑单元测试,无法直接实例化Android原生类,可使用Mock框架构造模拟对象,以MockK为例:

val mockPackageInfo = mockk<PackageInfo> {
    every { applicationInfo } returns mockk<ApplicationInfo> {
        every { packageName } returns "com.example.test.app1"
    }
}
val packages = listOf(mockPackageInfo)

内容的提问来源于stack exchange,提问作者Bob Redity

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.19 07:06:05