首先下载apk,自己写个json串放到服务器里面
以下json串为例:
{“versionCode”:2,”des”:”新版本,更炫,更酷!”,”url”:”http://169.254.68.173:8080/demo.apk“}
/**
* 版本更新
*/
private void update() {
// 1.获得最新版本
HttpUtils httpUtils = new HttpUtils(5000);
httpUtils.send(HttpRequest.HttpMethod.GET, "http://169.254.68.173:8080/json.json", new RequestCallBack<String>() {
@Override
public void onFailure(HttpException arg0, String arg1) {
Toast.makeText(TextActivity.this, "服务器异常", Toast.LENGTH_SHORT).show();
redirect();
}
@Override
public void onSuccess(ResponseInfo<String> arg0) {
//获取最新版本号
String json = arg0.result;
try {
JSONObject jsonObject = new JSONObject(json);
int newCode = jsonObject.getInt("versionCode");
url = jsonObject.getString("url");
System.out.println(url);
//2.获得当前版本号
int currentCode = getCurrentCode();
if(currentCode<newCode){
//3.弹窗
AlertDialog.Builder builder = new AlertDialog.Builder(TextActivity.this);
builder.setTitle("版本更新");
builder.setMessage(jsonObject.getString("des"));
builder.setNegativeButton("取消", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
//取消更新
dialog.dismiss();
redirect();
}
});
builder.setPositiveButton("确定", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
//4.下载apk
install();
}
});
builder.show();
}else{
Toast.makeText(TextActivity.this, "已经是最新版本", Toast.LENGTH_SHORT).show();
}
} catch (JSONException e) {
e.printStackTrace();
}
}
});
}
/**
* 获取版本号
*/
public int getCurrentCode(){
PackageManager packageManager = getPackageManager();
try {
PackageInfo packageInfo = packageManager.getPackageInfo(getPackageName(), 0);
return packageInfo.versionCode;
} catch (PackageManager.NameNotFoundException e) {
e.printStackTrace();
}
return -1;
}
/**
* 跳转
*/
public void redirect(){
new Thread(){
public void run() {
SystemClock.sleep(2000);
Intent intent = new Intent(TextActivity.this, MainActivity.class);
startActivity(intent);
finish();//跳转
};
}.start();
}
/**
* 下载apk
*/
public void install(){
HttpUtils httpUtils = new HttpUtils(5000);
httpUtils.download(url, "/mnt/sdcard/demo.apk", new RequestCallBack<File>() {
@Override
public void onFailure(HttpException arg0, String arg1) {
Toast.makeText(TextActivity.this, "下载失败", Toast.LENGTH_SHORT).show();
System.out.println(url);
redirect();
}
@Override
public void onSuccess(ResponseInfo<File> arg0) {
// 跳转到系统安装页面
Intent intent = new Intent();
intent.setAction("android.intent.action.VIEW");
intent.addCategory("android.intent.category.DEFAULT");
intent.setDataAndType(Uri.fromFile(arg0.result),
"application/vnd.android.package-archive");
startActivityForResult(intent, 0);// 如果用户取消安装的话,
// 会返回结果,回调方法onActivityResult
}
});
}
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
redirect();
}
运行时要启动服务器 Tomcat bin start.up