流程:由于没弄服务器,很多数据模拟写死的,比如服务器给的版本号,写死是2.0。需要下载的APP,写死成SD卡上的APP

  1、获取服务器版本号(假设是2.0) 不等于本地版本号1.0   →  2、下载APP (下载完成) →  3、APP内更新安装 (安装完成) →  4、删除APK安装包

private String new_version="2.0";//应为服务器获取来的版本,这里测试用手写成2.0
private String path= Environment.getExternalStorageDirectory()+"/new.apk";
private File myfile=new File(path);
private Context context;

1、检测本地APP版本号:调用此方法,返回的即是版本号。我的APP是1.0(或者出错的异常)

public String getVersion() {//获取版本号
try {
PackageManager manager = this.getPackageManager();
PackageInfo info = manager.getPackageInfo(this.getPackageName(), 0);
String version = info.versionName;
return this.getString(R.string.version_name) + version;
} catch (Exception e) {
e.printStackTrace();
return this.getString(R.string.can_not_find_version_name);
}
}

2、获取服务器端给的版本号,网上可以找。我这里模拟写死是2.0

3、比对版本号,1.0跟服务器最新的2.0 不等于  执行更新的方法

if (!getVersion().equals(new_version)){//新版本2.0
installApk(this,myfile);
}

4、下载APP。去服务器下载,我这里写死成SD卡的APP路径

private static void installApk(Context mContext, File file) {
Uri fileUri = Uri.fromFile(file);
Intent it = new Intent();
it.setAction(Intent.ACTION_VIEW);
it.setDataAndType(fileUri, "application/vnd.android.package-archive");//数据和类型
it.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);// 防止打不开应用
mContext.startActivity(it);
}