android 升级包检测并更新兑现

android 升级包检测并更新实现
android 升级包检测并更新实现
实现步骤:
1.获取当前android程序的包名或版本代码
	public class Version {

	public int getCode() {
              //android.content.ContextWrapper.getPackageManager()

			PackageManager packageManager = app.getPackageManager();
			int code = -1;
			try {
				code = packageManager.getPackageInfo(Package.name, 0).versionCode;
			}
			catch (PackageManager.NameNotFoundException e) {
				e.printStackTrace();
			}
			return code;
		}

		public String getName() {
			PackageManager packageManager = app.getPackageManager();
			String name = null;
			try {
				name = packageManager.getPackageInfo(Package.name, 0).versionName;
			}
			catch (PackageManager.NameNotFoundException e) {
				e.printStackTrace();
			}
			return name;
		}
	}

上面的版本代码是我们在AndroidManifest.xml配置的
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
	package="com.test.mobile" android:versionCode="100000100"
	android:versionName="1.0.1">

2.启动软件时从远程服务器端获取版本代码
versionName = app.server.getContent("/dist/version.txt").trim();

3.当前程序版本代码与远程获取的比对,不同则升级
if (currentVersionName.equals(versionName) || StrFuncs.isEmpty(versionName)) {
			return false;
		}

4.启动线程下载远程应用
  a.获取android手机安装apk路径和相关权限
 
apkFilePath = Environment.getExternalStorageDirectory().getAbsolutePath() + "/temp/test_android.apk";
		apkFile = new File(apkFilePath);
		if (apkFile.exists()) {
			apkFile.delete();
		}
  

b.下载安装包apk
handler = new Handler();
		new Thread() {
			@Override
			public void run() {
				app.server.download("/dist/test_android.apk", apkFilePath);
				handler.post(new Runnable() {
					public void run() {
						progressDlg.cancel();
					}
				});
				Intent intent = new Intent(Intent.ACTION_VIEW);
				intent.setDataAndType(Uri.fromFile(apkFile), "application/vnd.android.package-archive");
				fromActivity.startActivity(intent);
				fromActivity.finish();
			}
		}.start();

在AndroidManifest.xml配置的权限
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />