Android 中获取应用名称 APP Name - 文章教程

Android 中获取应用名称 APP Name

发布于 2021-02-13 字数 2357 浏览 1521 评论 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();
}

如果你对这篇文章有疑问,欢迎到本站 社区 发帖提问或使用手Q扫描下方二维码加群参与讨论,获取更多帮助。

扫码加入群聊

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

目前还没有任何评论,快来抢沙发吧!

关于作者

JSmiles

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

2583 文章
29 评论
84935 人气
更多

推荐作者

佚名

文章 0 评论 0

文江

文章 0 评论 0

2012013325

文章 0 评论 0

女中豪杰

文章 2 评论 0