在我的清单中,我有:
<application
android:name=".MyApp"
android:icon="@drawable/ic_launcher_icon"
android:label="@string/app_name"
android:debuggable="true">
如何获取label元素?
注意:我的代码在别人的代码中运行,所以我没有访问@string/app_name的权限
发布于 2013-02-27 22:23:03
有一种比其他答案更简单的方法,它不需要您显式地命名资源,也不需要担心包名的异常。如果您直接使用字符串而不是资源,它也可以工作。
只需这样做:
public static String getApplicationName(Context context) {
ApplicationInfo applicationInfo = context.getApplicationInfo();
int stringId = applicationInfo.labelRes;
return stringId == 0 ? applicationInfo.nonLocalizedLabel.toString() : context.getString(stringId);
}
希望这能有所帮助。
编辑
根据Snicolas的评论,我已经修改了上面的代码,这样如果id为0,它就不会尝试解析它。相反,它使用nonLocalizedLabel
作为退避。不需要在try/catch中包装。
发布于 2013-05-08 23:09:18
如果没有在字符串中提到/由于任何原因硬编码在AndroidManifest.xml中,就像android:label="MyApp"
public String getAppLable(Context context) {
PackageManager packageManager = context.getPackageManager();
ApplicationInfo applicationInfo = null;
try {
applicationInfo = packageManager.getApplicationInfo(context.getApplicationInfo().packageName, 0);
} catch (final NameNotFoundException e) {
}
return (String) (applicationInfo != null ? packageManager.getApplicationLabel(applicationInfo) : "Unknown");
}
或者,如果您知道字符串资源ID,则可以直接通过
getString(R.string.appNameID);
发布于 2013-05-11 00:17:51
Java
public static String getApplicationName(Context context) {
return context.getApplicationInfo().loadLabel(context.getPackageManager()).toString();
}
Kotlin (as扩展)
fun Context.getAppName(): String = applicationInfo.loadLabel(packageManager).toString()
https://stackoverflow.com/questions/11229219
复制相似问题