先看效果图 前面是网易云的小火箭更新dialog
先说思路吧,想实现自动更新版本,最简单就是获取到应用的包信息,应用版本号,版本名,然后每次登陆的时候从服务器获取当前apk的版本号和版本名,然后进行判断,不一致证明是新版本,弹出dialog 让用户更新,选择立即更新调用浏览器下载(系统自带的),然后就是安装了...balabala
步骤 1,获取包信息,版本号,版本名
/** * 返回当前程序版本名 build.gradle */ public String getAppVersionName(Context context) { try { // ---get the package info--- PackageManager pm = context.getPackageManager(); PackageInfo pi = pm.getPackageInfo(context.getPackageName(), 0); versionName = pi.versionName; versioncode = pi.versionCode; LogUtil.d("versionName:---"+versionName,"versioncode:---"+versioncode); if (versionName == null || versionName.length() <= 0) { return ""; } } catch (Exception e) { Log.e("VersionInfo", "Exception", e); } return versionName; }打印的log
05-18 09:03:17.200 31512-31512/com.hxzh.uniwill.lingjian D/versionName:---1.0.5: versioncode:---5
有一点需要注意,获取的版本号是build.gradle里的
2.通过上面的方法获取到版本名(也就是1.0.5)之后联网获取服务器存的版本名
private String oldVersion,NewVersion,versionmsg,url; private TextView tvmsg,tvcode;
oldVersion = getAppVersionName(Activity_login.this);
OkHttpUtils.get(Http_Api.URL_UpdataVersion) .params("ostype","1") .execute(new StringCallback() { @Override public void onSuccess(String s, Call call, Response response) { updataVserion = JsonUtil.parseJsonToBean(s,Data_updataVserion.class); NewVersion = updataVserion.getVersion(); versionmsg = updataVserion.getMess(); url = updataVserion.getAddress(); String[] n = versionmsg.split("n"); versionmsg = n[0]+"\n"+n[1]+"\n"+n[2]; if (!NewVersion.equals(oldVersion)){ updataDialog.show();