Android labelRes 为 0

Android labelRes is 0

我正在使用 int stringID = context.getApplicationInfo().labelRes 获取应用程序名称资源 ID。然后我使用 context.getString(stringID) 来获取应用程序名称。 我得到

 W/ResourceType: No package identifier when getting value for resource number 0x00000000
    android.content.res.Resources$NotFoundException: String resource ID #0x0

知道为什么 labelRes 是 0 吗?

试试这个可能对你有帮助

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


String appName=getApplicationName(context);

我能够通过在使用 manifestPlaceholders 从 Gradle 构建文件传递标签之前在 strings.xml 中指定标签来解决此问题。

第三方库中的问题是他们不检查 applicationInfo.lableRes 是否为 0。