Android apk版本更新

说到android的版本更新,要写一个出来还是需要耗费一点时间的,这次我们来写一个版本更新服务,用户进入app后有新版本需要更新则提示用户确认更新,更新在后台运行,不影响用户的正常操作,用户体验相对较好。


Android版本更新的步骤:

1、获取当前app版本号,代码如下

public String getAppVersion() {
try {
PackageInfo packinfo = pm.getPackageInfo(context.getPackageName(),0);
return packinfo.versionName;
} catch (NameNotFoundException e) {
e.printStackTrace();
}
return "1.0";
}


2、从服务器获取版本号,并与当前版本进行对比,如果相同则不更新,如果服务器版本号大于当前版本号,弹出更新对话框,提示用户进行更新升级。弹出对话框今天就不在这里写了,这部分代码相对还是比较简单的,当然如果我们需要一个比较好看的对话框,系统提供的原生对话框是不能满足我们的需求的,需要自定义对话框,读者可以自己去研究这方面的代码。

3、用户确认进行版本更新后,将从服务器下载更新的apk并进行自动升级。此处就用到了我们今天说到的版本更新服务,具体代码如下,部分代码已经做了注释,就不详细说明了。

import java.io.BufferedInputStream;
import java.io.BufferedOutputStream;
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import org.apache.http.HttpEntity;
import org.apache.http.HttpResponse;
import org.apache.http.client.ClientProtocolException;
import org.apache.http.client.HttpClient;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.impl.client.DefaultHttpClient;
import org.apache.http.params.CoreConnectionPNames;
import com.ygwaimai.manage.R;
import com.ygwaimai.manage.util.AppInfo;
import android.app.Notification;
import android.app.NotificationManager;
import android.app.PendingIntent;
import android.app.Service;
import android.content.Context;
import android.content.Intent;
import android.net.Uri;
import android.os.Environment;
import android.os.Handler;
import android.os.IBinder;
import android.os.Looper;
import android.os.Message;
import android.widget.RemoteViews;
import android.widget.Toast;

public class UpdateService extends Service {

	private NotificationManager nm;
	private Notification notification;
	private File tempFile = null;
	private boolean cancelUpdate = false;
	private MyHandler myHandler;
	private int download_precent = 0;
	private RemoteViews views;
	private int notificationId = 1234;

	private int appicon;

	public static final int TIME_OUT_MILL = 50000;// 超时毫秒数
	private static final String DOWNLOAD_APK_PATH = "APK_UPDATE";
	
	//更新进度标记
	private static final int UPDATE_DOWNLOAD_PRECENCE = 3;
	//下载完成标记
	private static final int DOWNLOAD_FINISH = 2;
	//下载APK失败标记
	private static final int DOWNLOAD_FAIL = 4;
	
	@Override
	public IBinder onBind(Intent intent) {
		return null;
	}

	@Override
	public void onStart(Intent i
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值