You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Android API≤24时applicationInfo.name恒为null,求替代方案及官方依据

获取Manifest中的android:name属性兼容方案

兼容全API等级的写法

直接优先使用applicationInfo.className,它在所有API版本中都能正确返回Manifest里<application>标签的android:name属性值,仅在极端为空的场景下再 fallback 到applicationInfo.name:

String appManifestName = myApp.applicationInfo.className != null 
    ? myApp.applicationInfo.className 
    : myApp.applicationInfo.name;

低版本用name返回null的原因

在Android API 24及以下,ApplicationInfo.name字段存储的是应用进程名称,而非Manifest中<application>的android:name属性值。API 25之后Google调整了该字段的逻辑,让它与className保持一致,所以高版本可用、低版本失效。

关于className的有效性说明

虽然官方文档没有专门标注,但从Android源码的历史实现来看:

  • 从API 1开始,ApplicationInfo.className就是用来存储Manifest中<application>标签指定的android:name值的,无论是否自定义Application子类,这个字段都会被正确赋值
  • 低版本的PackageParser解析Manifest时,会直接将android:name的内容写入className,而name则被赋值为进程名称

内容的提问来源于stack exchange,提问作者Abdul Mateen

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.25 13:22:06