Android:获取应用程序名(不是包名)

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (2)
  • 关注 (0)
  • 查看 (17)

在我的清单中我有:

  <application
    android:name=".MyApp"
    android:icon="@drawable/ic_launcher_icon"
    android:label="@string/app_name"
    android:debuggable="true">

我如何获得标签元素?注意:我的代码在其他人的内部运行,所以我无法访问@ string / app_name。

提问于
用户回答回答于

如果没有在AndroidManifest.xml的strings.xml / hardcoded中提到,无论出于何种原因,如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);
用户回答回答于

有一种比其他答案更简单的方法,不需要你显式地命名资源或担心包名的异常。如果你直接使用了字符串而不是资源,它也能工作。

只要做:

public static String getApplicationName(Context context) {
    ApplicationInfo applicationInfo = context.getApplicationInfo();
    int stringId = applicationInfo.labelRes;
    return stringId == 0 ? applicationInfo.nonLocalizedLabel.toString() : context.getString(stringId);
}

希望这能帮上忙。

扫码关注云+社区