e.printStackTrace();
}
return _PackageName;
}
/**
-
获取APP版本号
-
@param pContext Context
-
@return AppVersionName
*/
public static String getAppVersionName(Context pContext) {
String _VersionName = “”;
try {
PackageManager _PM = pContext.getPackageManager();
PackageInfo _PInfo = _PM.getPackageInfo(pContext.getPackageName(), 0);
_VersionName = _PInfo.versionName;
if (_VersionName == null || _VersionName.length() <= 0) {
return “”;
}
} catch (Exception e) {
e.printStackTrace();
}
return _VersionName;
}
/**
-
获取APP版本号
-
@param pContext Context
-
@return AppVersionCode
*/
public static int getAppVersionCode(Context pContext) {
int _VersionCode = 0;
try {
PackageManager _PM = pContext.getPackageManager();
PackageInfo _PInfo = _PM.getPackageInfo(pContext.getPackageName(), 0);
_VersionCode = _PInfo.versionCode;
} catch (Exception e) {
e.printStackTrace();
}
return _VersionCode;
}
/**
-
获取APP的ChannelId
-
@param pContext
-
@return
*/
public static synchronized int getAppChannelId(Context pContext){
int __ChannelId = 0;
String _ChannelId = AppConfig.getAppChannelId(pContext);
try {
if (TextUtils.isEmpty(_ChannelId)){
_ChannelId = getChannelFromApk(pContext);
if (TextUtils.isEmpty(_ChannelId)){
_ChannelId = FileAssetsUtil.getStringFromAssert(pContext, “cn”);
if (!TextUtils.isEmpty(_ChannelId)){
AppConfig.setAppChannelId(pContext, _ChannelId);
}
}else {
AppConfig.setAppChannelId(pContext, _ChannelId);
}
}
if (!TextUtils.isEmpty(_ChannelId)){
__ChannelId = Integer.parseInt(_ChannelId);
}else {
__ChannelId = 0;
}
} catch (NumberFormatException e) {
e.printStackTrace();
}
return __ChannelId;
}
/**
-
获取APP的Channel2Id
-
@param pContext
-
@return
*/
public static synchronized int getAppChannel2Id(Context pContext){
int __Channel2Id = 0;
String _Channel2Id = AppConfig.getAppChannel2Id(pContext);
try {
if (TextUtils.isEmpty(_Channel2Id)){
_Channel2Id = FileAssetsUtil.getStringFromAssert(pContext, “cn2”);
if (!TextUtils.isEmpty(_Channel2Id)){
AppConfig.setAppChannel2Id(pContext, _Channel2Id);
}
}
if (!TextUtils.isEmpty(_Channel2Id)){
__Channel2Id = Integer.parseInt(_Channel2Id);
}else {
__Channel2Id = 0;
}
} catch (NumberFormatException e) {
e.printStackTrace();
}
return __Channel2Id;
}
/**
-
从apk中获取版本信息
-
@param pContext
-
@return
*/
private static String getChannelFromApk(Context pContext) {
//从apk包中获取
ApplicationInfo _AppInfo = pContext.getApplicationInfo();
String _SourceDir = _AppInfo.sourceDir;
//默认放在META-INF/里, 所以需要再拼接一下
String _Key = “META-INF/” + CHANNEL_KEY;
String _Ret = “”;
ZipFile _ZipFile = null;
最后
自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。
深知大多数初中级Android工程师,想要提升技能,往往是自己摸索成长,自己不成体系的自学效果低效漫长且无助。
因此我收集整理了一份《2024年Android移动开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。
既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上Android开发知识点!不论你是刚入门Android开发的新手,还是希望在技术上不断提升的资深开发者,这些资料都将为你打开新的学习之门
如果你觉得这些内容对你有帮助,需要这份全套学习资料的朋友可以戳我获取!!
由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且会持续更新!
入学习提升的进阶课程,基本涵盖了95%以上Android开发知识点!不论你是刚入门Android开发的新手,还是希望在技术上不断提升的资深开发者,这些资料都将为你打开新的学习之门**
如果你觉得这些内容对你有帮助,需要这份全套学习资料的朋友可以戳我获取!!
由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且会持续更新!