一般的安卓app都有自动更新功能,实现app的更新,以让用户体验新版本的功能,这里也是项目中用到的,今天就来总结一下。做和记录。
import android.annotation.SuppressLint;
import android.app.Activity;
import android.content.Context;
import android.content.Intent;
import android.content.pm.PackageManager;
import android.net.Uri;
import android.os.Build;
import android.os.Handler;
import android.os.Message;
import android.support.v4.app.ActivityCompat;
import android.support.v4.content.ContextCompat;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
import android.widget.ProgressBar;
import android.widget.Toast;
import com.gwkj.qixiubaodian.Manifest;
import com.gwkj.qixiubaodian.R;
import com.gwkj.qixiubaodian.qxbd.SdCardUtils;
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.net.HttpURLConnection;
import java.net.MalformedURLException;
import java.net.URL;
/**
* 版本更新
*/
public class UpdateManager extends SdCardUtils {
private Context mContext;
private String updateMsg = "发现新版本,请及时更新";// 提示语
private String apkurl = "";// 返回的安装包url//
private AlertDialogEx downloadDialog;// 下载提示
@SuppressLint("SdCardPath")
private static final String savePath1 = "/sdcard/App";// 保存路径
@SuppressLint("SdCardPath")
private static final String savePath = "/sdcard/App/updatedemo/";// 保存路径
private static final String saveFileName = "App.apk";
private ProgressBar mProgress;// 进度条
private static final int DOWN_UPDATE = 1;
private static final int DOWN_OVER = 2;
private int progress;
private Thread downLoadThread;
private boolean interceptFlag = false;
// 外部接口调用
public void checkUpdateInfo(String apkurl, String apkInfo) {
this.apkurl = apkurl;
this.updateMsg = apkInfo;
showNoticeDialog();
}
// 当有新版本提示示更新
public void showNoticeDialog() {
final AlertDialogEx alert = new AlertDi