安卓工具类之app获取版本渠道信息工具类

/**

  • 获取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;

try {

_ZipFile = new ZipFile(_SourceDir);

Enumeration<?> _Entries = _ZipFile.entries();

while (_Entries.hasMoreElements()) {

ZipEntry _ZipEntry = ((ZipEntry) _Entries.nextElement());

String _EntryName = _ZipEntry.getName();

if (_EntryName.startsWith(_Key)) {

_Ret = _EntryName;

break;

}

}

} catch (IOException e) {

e.printStackTrace();

} finally {

if (_ZipFile != null) {

try {

_ZipFile.close();

} catch (IOException e) {

e.printStackTrace();

}

}

}

String[] _Split = Ret.split("");

String _Channel = “”;

if (_Split != null && _Split.length >= 3) {

_Channel = _Split[2].toString();

最后

自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。

深知大多数初中级Android工程师,想要提升技能,往往是自己摸索成长,自己不成体系的自学效果低效漫长且无助

因此我收集整理了一份《2024年Android移动开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上Android开发知识点!不论你是刚入门Android开发的新手,还是希望在技术上不断提升的资深开发者,这些资料都将为你打开新的学习之门

如果你觉得这些内容对你有帮助,需要这份全套学习资料的朋友可以戳我获取!!

由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且会持续更新!
入学习提升的进阶课程,基本涵盖了95%以上Android开发知识点!不论你是刚入门Android开发的新手,还是希望在技术上不断提升的资深开发者,这些资料都将为你打开新的学习之门**

如果你觉得这些内容对你有帮助,需要这份全套学习资料的朋友可以戳我获取!!

由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且会持续更新!

  • 12
    点赞
  • 26
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,以下是一个简单的获取用户当前位置的工具类的示例代码,你可以自行在你的APP中进行修改和使用: ``` import android.Manifest; import android.content.Context; import android.content.pm.PackageManager; import android.location.Location; import android.location.LocationListener; import android.location.LocationManager; import android.os.Bundle; import android.support.v4.app.ActivityCompat; public class LocationUtils { private static final int MIN_TIME = 1000; // 定位间隔时间,单位毫秒 private static final float MIN_DISTANCE = 10; // 定位间隔距离,单位米 public interface LocationCallBack { void onLocationSuccess(Location location); void onLocationFailed(); } public static void getLocation(Context context, final LocationCallBack callBack) { // 获取位置管理器 LocationManager locationManager = (LocationManager) context.getSystemService(Context.LOCATION_SERVICE); // 获取权限 if (ActivityCompat.checkSelfPermission(context, Manifest.permission.ACCESS_FINE_LOCATION) != PackageManager.PERMISSION_GRANTED && ActivityCompat.checkSelfPermission(context, Manifest.permission.ACCESS_COARSE_LOCATION) != PackageManager.PERMISSION_GRANTED) { callBack.onLocationFailed(); return; } // 注册监听器 locationManager.requestLocationUpdates(LocationManager.GPS_PROVIDER, MIN_TIME, MIN_DISTANCE, new LocationListener() { @Override public void onLocationChanged(Location location) { // 定位成功 callBack.onLocationSuccess(location); } @Override public void onStatusChanged(String provider, int status, Bundle extras) { } @Override public void onProviderEnabled(String provider) { } @Override public void onProviderDisabled(String provider) { } }); // 获取当前位置 Location location = locationManager.getLastKnownLocation(LocationManager.GPS_PROVIDER); if (location != null) { // 定位成功 callBack.onLocationSuccess(location); } else { // 定位失败 callBack.onLocationFailed(); } } } ``` 使用方法: 1. 在你的APP中调用`LocationUtils.getLocation()`方法并传入`Context`和实现了`LocationCallBack`接口的回调参数。 2. 在回调方法`onLocationSuccess()`中获取到`Location`对象,即为用户当前位置信息。 3. 在回调方法`onLocationFailed()`中处理定位失败的情况。 需要注意的是,在使用该工具类之前,你需要在你的APP中申请获取用户位置信息的权限。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值