如何获取已安装应用程序的图标?

问题描述 投票:0回答:1

有很多 Java 示例代码,但我找不到 Jetpack Compose 的任何结果。
我有一个 ViewModel,它返回一个包名称列表。我想显示应用程序图标。

以前也出现过类似的问题,但无法从答案中找到解决方案。

class MalwareListViewModel : ViewModel() {
    private val malwareList = mutableListOf<String>()
    fun getMalwareList(): List<String> {
        return malwareList
    }
}
android android-jetpack-compose android-jetpack
1个回答
0
投票

您可以使用

ApplicationInfo
 从应用程序包名称中获取 
getApplicationInfo()
对象,然后使用它来加载应用程序图标:

val malwareIcons = mutableListOf<Drawable>()
for (packageName in malwareList) {
    var appInfo;
    try {
        appInfo = 
        packageManager.getApplicationInfo(packageName, 0);
    } catch(NameNotFoundException n) {
        Log.e("MalwareViewModel", "Package Name ${packageName} not found.")
        continue
    }
    
    val appIcon: Drawable = packageManager.getApplicationIcon(appInfo)
    malwareIcons.add(appIcon)
}

列表

malwareIcons
然后包含您的
malwareList
中包名称的所有图标。

© www.soinside.com 2019 - 2024. All rights reserved.