Android 中获取应用名称 APP Name

发布于 2021-02-13 11:01:47 字数 2117 浏览 2623 评论 0

在 Android 开发中,偶尔会遇到获取App Name 的方法,深入了解一下。

分析关于 Android Manifest 节点

<application
android:name=".HahaApplication"
android:allowBackup="true"
android:hardwareAccelerated="true"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:supportsRtl="true"
android:theme="@style/AppTheme">

android:label 节点为我们所找,即对应的资源文件 @string/app_name

1.根据资源获取 name

public static String getAppName(Context context){
     return context.getString(R.string.app_name);
}

2.如果 android:label 对应的资源不是 @string/app_name ,我们可以通过资源Id 反向查找。

public static String getAppName(Context context){
     int lableInfo = context.getApplicationInfo().labelRes;
     return  context.getString(lableInfo);
}

3.如果当AndroidManifest 在二次打包时候,修改label 对应的值,通过资源查找的方式就不可靠了,需要修改:

public static String getAppName(Context context){
    String name="";
    PackageManager packageManager = context.getPackageManager();
    ApplicationInfo applicationInfo = null;
    try {
        applicationInfo = packageManager.getApplicationInfo(context.getApplicationInfo().packageName, 0);
        name = (String) (applicationInfo != null ? packageManager.getApplicationLabel(applicationInfo) : name);
    } catch (NameNotFoundException e) {
        e.printStackTrace();
    }
   return name;
}

总结,以上三种方式按照不同的需要,对应不同解法,获取相应 app name 。

踩过的坑:ApplicationInfo.name 获取 app name ,获取的appInfo.name 为 null ,造成空指针异常。

try {
    ApplicationInfo appInfo = context.getPackageManager()
        .getApplicationInfo(context.getPackageName(), PackageManager.GET_META_DATA);
    name = appInfo.name;
} catch (NameNotFoundException e) {
    e.printStackTrace();
}

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据

关于作者

JSmiles

生命进入颠沛而奔忙的本质状态,并将以不断告别和相遇的陈旧方式继续下去。

0 文章
0 评论
84961 人气
更多

推荐作者

醉城メ夜风

文章 0 评论 0

远昼

文章 0 评论 0

平生欢

文章 0 评论 0

微凉

文章 0 评论 0

Honwey

文章 0 评论 0

qq_ikhFfg

文章 0 评论 0

    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文