android 自动更新的实现

主要原理是:

在应用启动的时候,去取服务器上版本号 ,与当前应用的对比如果有更新则下载

下面这个是获取当前应用的版本信息

private void getCurVersion() {
        try {
            PackageInfo pInfo = context.getPackageManager().getPackageInfo(
                    context.getPackageName(), 0);
            curVersion = pInfo.versionName;
            curVersionCode = pInfo.versionCode;
        } catch (NameNotFoundException e) {
            Log.e("update", e.getMessage());
            curVersion = "1.0.1";
            curVersionCode = 1;
        }

    }

下面则是通过java net包来get版本信息,进行比较

服务器端格式如下     version_1.0.2

HttpURLConnection 获取输入流,再用

BufferedReader 缓冲流,readline成String,再比较

private boolean check_update(){
		String getstring = null;
		String version=null;
		getCurVersion();
		try {

			URL myurl=new URL(app_check);

			HttpURLConnection urlconnection=(HttpURLConnection) myurl.openConnection();
			urlconnection.setReadTimeout(50000);
			urlconnection.setConnectTimeout(50000);
			urlconnection.connect();
			InputStream in=urlconnection.getInputStream();

			   BufferedReader buffread;
			   buffread=new BufferedReader(new InputStreamReader(in,"utf-8"));
			   String line;
				line=buffread.readLine();
				while(line!=null){
					getstring+=line;
					line=buffread.readLine();

				}
				int index=getstring.indexOf("version_");
				//2.0.1
				version=getstring.substring(index+8, index+13);
				in.close();
				Log.e("version",version);
		} catch (MalformedURLException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		} catch (IOException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
	    if(version!=null){
		if(version.compareTo(curVersion)>0)
			return true;
		else
			return false;
	    }
	    else
	    	return false;
	}

接下来则是弹出一对话框以及调用下载线程

private void showdownDialog(){
		 AlertDialog.Builder dialog = new AlertDialog.Builder(context);
	        dialog.setTitle("软件版本更新");
	        dialog.setMessage("有最新的app更新");
	       dialog.setNegativeButton("以后再说", new OnClickListener(){

			@Override
			public void onClick(DialogInterface arg0, int arg1) {
				// TODO Auto-generated method stub
				arg0.dismiss();
			}

	       });
	       dialog.setPositiveButton("确定", new OnClickListener(){

			@Override
			public void onClick(DialogInterface dialog, int which) {
				// TODO Auto-generated method stub
				//确定里面调用下载线程,同时显示下载的那个进度对话框
				dialog.dismiss();
				cancel=true;
				downapk();
				showDownapk();
			}

	       });
	       dialog.show();
	}

最后则是发出一个Intent广播

private void setInstall(){

File apkfile = new File(apk_path);

if (!apkfile.exists()) {

return;

}

Intent i = new Intent(Intent.ACTION_VIEW);

i.setDataAndType(Uri.parse("file://" + apkfile.toString()), "application/vnd.android.package-archive");

context.startActivity(i);

}

android 自动更新的实现

时间: 2024-10-27 11:18:47

android 自动更新的实现的相关文章

phonegap(cordova) 自定义插件代码篇(二)----android 自动更新

程序总要更新的,apple 等appstore 处理,android版 自动更新,上代码 /** * 检查并更新APP */ (function (cordova) { var define = cordova.define; define("cordova/plugin/updateApp", function (require, exports, module) { var argscheck = require('cordova/argscheck'), exec = requi

Android 自动更新 + IIS7 添加APK mime

如果APK文件放在IIS下面需要添加APK的mime,否则会出现下面错误 可以在IIS上添加mime映射 .apk application/vnd.android   下面内容转自:http://www.cnblogs.com/coolszy/archive/2012/04/27/2474279.html 由于Android项目开源所致,市面上出现了N多安卓软件市场.为了让我们开发的软件有更多的用户使用,我们需要向N多市场发布,软件升级后,我们也必须到安卓市场上进行更新,给我们增加了工作量.因此

Android 自动更新APP时确定安装后没有显示安装完成页面

自动更新APP代码时,开始用的是以下代码 Intent intent = new Intent(Intent.ACTION_VIEW);                 intent.setDataAndType(Uri.parse("file://"+Constants.SDK_DIR +File.separator+Constants.SDK_NAME), "application/vnd.android.package-archive");         c

android 自动更新升级的问题

问题描述 大家好,关于android 升级的问题想问下大家,求解答,先言谢了.. 我目前手机上的app版本的30,服务器上的app是31.每一次app启动的时候发送信息区服务器上获取数据,其中 服务器会给过来当前服务器app版本,比对如果高于当前app则启动升级程序. 升级的时候提示成功了.其实却失败了.情况是.应用程序列表的图标和下面的字体都变化了,程序大小也变化了.但是进去之后UI内容没变化.我试验了很多次,卸载程序或者打成apk安装,或者eclipse安装,都一样.确信的是服务器上的Apk

Android自动更新

1.在后台维护一个Android的版本号,当每次进入APP的时候,在欢迎界面时,都去查询这个最新的版本号.和当前APP的版本对比. 2.将最新的APP(最新版本号)放在服务器上,并且提供一个下载功能的url(可以在后台维护一个上传最新的APP的一个功能). /** * 下载app * * @param url * @return */ public static Object downloadPdaLookUp(String action, final Context mContext) { S

Android 自动更新--安装新文件后没有"完成,打开"提示界面

下载了Android App安装文件后,在执行安装时不能显示"完成,打开"界面,这是因为没有为intent设置setFlags(Intent.FLAG_ACTIVITY_NEW_TASK). /** * 安装APK文件 */ private void installApk(String savePath, String fileName) { File apkfile = null; try { apkfile = new File(savePath, fileName); } cat

Android自动更新安装后显示‘完成’‘打开’按钮

1 /** 2 * 安装apk 3 * 4 * @param url 5 */ 6 private void installApk() { 7 File apkfile = new File(apkFilePath); 8 if (!apkfile.exists()) { 9 return; 10 } 11 Intent i = new Intent(Intent.ACTION_VIEW); 12 i.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); 13 i.s

自动更新--下载apk以及提示对话框的实现(3)

下载apk以及提示对话框的实现 一.步骤: 1. 确定有可以更新的版本,对话框提醒用户是否进行更新. 2. 选择更新的话,显示下载对话框并且进行下载,否则关闭提示更新对话框. 3. Apk下载完成后,安装apk. 二.具体细节: 1. 提示用户更新的时候,实现必须更新的方法如下:显示的对话框只显示更新按钮,也就是只能选择更新. 2. 下载的时候,下载对话框的页面显示一个进度条来显示下载进度. 3. 下载的时候,启动一个子线程来进行下载. 4. 下载的时候需要来源路径和下载后保存的路径. 5. 下

Android应用自动更新功能的代码实现

由于Android项目开源所致,市面上出现了N多安卓软件市场.为了让我们开发的软件有更多的用户使用,我们需要向N多市场发布,软件升级后,我们也必须到安卓市场上进行更新,给我们增加了工作量.因此我们有必要给我们的Android应用增加自动更新的功能. 既然实现自动更新,我们首先必须让我们的应用知道是否存在新版本的软件,因此我们可以在自己的网站上放置配置文件,存放软件的版本信息: <update> <version>2</version> <name>baidu