【问题标题】:Get launcher's icon resource identifier获取启动器的图标资源标识符
【发布时间】:2018-09-19 08:11:13
【问题描述】:

这是我获取应用程序启动器图标的方式(Koltin 代码,但这个问题与 Kotlin 无关):

val packageManager = packageManager()
val applicationInfo = packageManager.getApplicationInfo(packageName, 0)
val drawable = applicationInfo.loadIcon(packageManager)

现在TaskManager 不赞成使用非分辨率图标,我的意思是获取该启动器图标的值或DrawableRes(例如,等于R.drawable.ic_launcher 的标识符)。

我找不到方法。这是否可能是动态的(或者由于R.java 生成而不可能?),无需明确输入?

【问题讨论】:

  • 您想从哪里获取图标?您的项目中的图标在哪里?
  • 输入是一个包名。这是一个图书馆。

标签: android android-resources android-package-managers


【解决方案1】:

如果你想获取图标对应的资源id,并且知道包名和item名,可以这样:

int resourceId = this.getResources().getIdentifier("nameOfResource", "drawable", this.getPackageName());

this”是代码运行所在的活动。
nameOfResource”是图标本身的名称(不带文件扩展名)
drawable”是res的名称> 子文件夹,图标所在的位置。

你可以找到函数文档here

或者,您可以接收应用程序的资源 id 是这个:

final PackageManager packageManager = getPackageManager();
final ApplicationInfo applicationInfo=packageManager.getApplicationInfo(packageName,PackageManager.GET_META_DATA);
final int appIconResId=applicationInfo.icon;

这与您的方法相似。 您搜索您的应用程序的所有资源,并作为返回信息的成员访问图标 id。

【讨论】:

  • 这更像。但是,我想要启动器图标,即在清单中注册的图标,而不必猜测它是nameOfResource。否则,这似乎是我们能做到的最好的。
  • @shkschneider 你能告诉我,你想用这个图标的资源 ID 做什么?也许你甚至不需要它来实现你的目标。
  • 我只是想要一个库来公开一个BaseActivity,它自己调用setTaskDescription()。我以前使用过ApplicationInfo.loadIcon(),但现在它已被弃用,我想更新我的代码。不知道有没有可能^^
  • 好的,我明白你的意思。我已经用与您类似的替代方法编辑了我的答案。不推荐使用它的原因是,ApplicationIcon 应该始终是静态的 --> 常量。为什么要在TaskDescription中设置,如果已经在manifest文件中定义了,你也可以简单地使用setTaskDescription()而不需要图标。更多的源代码可以帮助我理解你的意图。
  • 是的,这就是我想要的。不知道为什么我错过了,但感谢ApplicationInfo.icon
猜你喜欢
  • 2012-03-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-05-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多