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 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论