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

public class AppInfoUtil {
    /** */
    private static final String CHANNEL_KEY = "kkj_channel";

    /**
     * get AppName
     *
     * @return
     */
    public static String getAppName(){
        return NewsApplication.getApp().getResources().getString(R.string.app_name);
    }
    /**
     * 获取应用包名
     *
     * @return AppPackageName
     */
    public static String getAppPackageName() {
        String _PackageName = "";
        try {
            _PackageName = NewsApplication.getApp().getPackageName();
        } catch (Exception e) {
            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;
        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();
        }
        return _Channel;
    }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值