添加依赖:gson,xutils,okhttp
配置权限:
<uses-permission android:name="android.permission.INTERNET"></uses-permission> <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"></uses-permission>
android:name=".Mvapplication"
MainActivity:
public class MainActivity extends AppCompatActivity { private String versionCode; private String version; private ProgressDialog m_progressDlg; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); m_progressDlg = new ProgressDialog(this); m_progressDlg.setProgressStyle(ProgressDialog.STYLE_HORIZONTAL);//设置水平方向的进度条 } public void getBanben(View view) { try { PackageManager manager = getPackageManager(); PackageInfo nPackageInfo = manager .getPackageInfo(getPackageName(), PackageManager.GET_CONFIGURATIONS); version = String.valueOf(nPackageInfo.versionCode); //得到现在app的版本号 Log.e("现在app的版本号", version + ""); } catch (PackageManager.NameNotFoundException e) { e.printStackTrace(); } // 获取 服务器版本 OkHttpClient mClient = new OkHttpClient(); //创建一个Request Request request = new Request.Builder() .url("http://169.254.159.111:8080/ssm/user/getVersionCode") .build(); mClient.newCall(request).enqueue(new Callback() { @Override public void onFailure(Call call, IOException e) { } @Override public void onResponse(Call call, Response response) throws IOException { String s = response.body().string(); Gson gson = new Gson(); Bean bean = gson.fromJson(s, Bean.class); Bean.DataBean data = bean.getData(); versionCode = String.valueOf(data.getVersionCode()); } }); if ((versionCode == version)) {//如果有新版本发送通知开始下载 Dialog dialog = new AlertDialog.Builder(this) .setTitle("已是最新版本") .setPositiveButton("确定", new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { } }) .show(); } else { //如果 弹出对话框告知用户 Log.e("okHttp", versionCode+""); update(); } } public void update() { Dialog dialog = new AlertDialog.Builder(this) .setTitle("软件更新") .setMessage("当前版本:" + version + " 已发现新的版本:" + versionCode + " 是否更新") .setPositiveButton("确定", new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { m_progressDlg.setTitle("正在下载"); m_progressDlg.setMessage("请稍候..."); downFile(); //开始下载 } }) .setNegativeButton("暂不更新", new DialogInterface.OnClickListener() { public void onClick(DialogInterface dialog, int whichButton) { // 点击"取消"按钮之后退出程序 finish(); } }).create(); dialog.show(); } private void downFile() { RequestParams params = new RequestParams(); m_progressDlg.show(); params.setUri("http://169.254.159.111:8080/ssm/user/download"); params.setSaveFilePath(Environment.getExternalStorageDirectory().getPath() + "/wp.apk"); params.addQueryStringParameter("fileName", "app.apk"); x.http().post(params, new org.xutils.common.Callback.CommonCallback<File>() { @Override public void onSuccess(File result) { m_progressDlg.dismiss(); Toast.makeText(MainActivity.this, "ok!", Toast.LENGTH_LONG).show(); Intent intent = new Intent(Intent.ACTION_VIEW); intent.setDataAndType(Uri.fromFile(result), "application/vnd.android.package-archive"); startActivity(intent); } @Override public void onError(Throwable ex, boolean isOnCallback) { } @Override public void onCancelled(CancelledException cex) { } @Override public void onFinished() { } }); } }
Bean:
public class Bean { /** * message : 执行成功! * data : {"versionCode":2,"forceFlag":false,"versionDes":"修复部分bug"} * errorCode : 0 */ private String message; private DataBean data; private String errorCode; public String getMessage() { return message; } public void setMessage(String message) { this.message = message; } public DataBean getData() { return data; } public void setData(DataBean data) { this.data = data; } public String getErrorCode() { return errorCode; } public void setErrorCode(String errorCode) { this.errorCode = errorCode; } public static class DataBean { /** * versionCode : 2.0 * forceFlag : false * versionDes : 修复部分bug */ private double versionCode; private boolean forceFlag; private String versionDes; public double getVersionCode() { return versionCode; } public void setVersionCode(double versionCode) { this.versionCode = versionCode; } public boolean isForceFlag() { return forceFlag; } public void setForceFlag(boolean forceFlag) { this.forceFlag = forceFlag; } public String getVersionDes() { return versionDes; } public void setVersionDes(String versionDes) { this.versionDes = versionDes; } } }