package android.source.tuangou.framework.update;
import android.os.Handler;
import android.os.Looper;
import android.os.Message;
import android.source.tuangou.framework.Application;
import android.source.tuangou.framework.Config;
import android.source.tuangou.framework.net.FileDownload;
import android.source.tuangou.framework.util.LogUtil;
public class UpdateService
{
public UpdateService(){
}
//客户端更新函数
public static void checkClientUpdate(final Handler progressHandler){
//检查客户端是否需要更新
if (VersionManager.checkClientUpdate()){
StringBuilder stringbuilder = (new StringBuilder()).append("New apk found: ");
String s = VersionManager.getRemoteVersion().currentStableClientVersion;
StringBuilder stringbuilder1 = stringbuilder.append(s).append(". Current apk version: ");
String s1 = Config.CLIENT_VERSION;
LogUtil.d(stringbuilder1.append(s1).toString());
Application application = Application.getInstance();
//文件下载类
FileDownload filedownload = new FileDownload(application);
StringBuilder stringbuilder2 = new StringBuilder();
String s2 = Config.REMOTE_UPDATE_PATH;
StringBuilder stringbuilder3 = stringbuilder2.append(s2);
String s3 = VersionManager.getRemoteVersion().getCurrentStableClientVersionInfo().fileName;
String s4 = stringbuilder3.append(s3).toString();
StringBuilder stringbuilder4 = new StringBuilder();
String s5 = Application.getAppFilesPath();
String localFilePath = stringbuilder4.append(s5).append("/").append("to_install_tmp.apk").toString();
System.out.println("localFilePath = "+localFilePath);
Handler1 mHandler1 = new Handler1(progressHandler,localFilePath);
System.out.println("s4 = "+s4);
filedownload.download(s4, "to_install_tmp.apk", mHandler1);
}
}
public static void checkWebFileUpdate(Handler handler)
{
checkWebFileUpdate(handler, false);
}
//检测客户端版本是否需要更新
public static void checkWebFileUpdate(final Handler progressHandler, final boolean stopLooper)
{
if (!VersionManager.checkWebFileUpdate()){
if (stopLooper)
Looper.myLooper().quit();
return;
} else {
StringBuilder stringbuilder = (new StringBuilder()).append("New web files found: ");
String s = VersionManager.getRemoteVersion().getCurrentWebVersion();
StringBuilder stringbuilder1 = stringbuilder.append(s).append(". Current version: ");
String s1 = VersionManager.getLocalVersion().webFileVersion;
LogUtil.d(stringbuilder1.append(s1).toString());
FileDownload filedownload = new FileDownload();
StringBuilder stringbuilder2 = new StringBuilder();
String s2 = Config.REMOTE_UPDATE_PATH;
StringBuilder stringbuilder3 = stringbuilder2.append(s2);
String s3 = VersionManager.getRemoteVersion().getCurrentClientVersionInfo().currentWebFile;
String s4 = stringbuilder3.append(s3).toString();
StringBuilder stringbuilder4 = new StringBuilder();
String s5 = Application.getAppFilesPath();
StringBuilder stringbuilder5 = stringbuilder4.append(s5).append("/");
String s6 = Config.UPDATE_FILE_FOLDER;
final String localFilePath = stringbuilder5.append(s6).append("/web_tmp.zip").toString();
Handler2 mHander2 = new Handler2(progressHandler,stopLooper,localFilePath);
filedownload.download(s4, localFilePath, mHander2);
}
}
private static class Handler1 extends Handler
{
final String localFilePath;
final Handler progressHandler;
public void handleMessage(Message message){
System.out.println("message.what = "+message.what);
if (progressHandler != null){
Message message1 = new Message();
message1.what = 4;
int i = message.arg1;
message1.arg1 = i;
boolean flag = progressHandler.sendMessage(message1);
}
boolean flag1;
if (message.what == 3 && progressHandler != null)
flag1 = progressHandler.sendEmptyMessage(6);
if (message.what == 2){
ApkInstaller.install(localFilePath);
}
}
Handler1(Handler handler, String localFilePath){
super();
progressHandler = handler;
this.localFilePath = localFilePath;
}
}
private static class Handler2 extends Handler
{
final String localFilePath;
final Handler progressHandler;
final boolean stopLooper;
public void handleMessage(Message message){
try {
if (progressHandler != null) {
Message message1 = new Message();
message1.what = 4;
int i = message.arg1;
message1.arg1 = i;
boolean flag = progressHandler.sendMessage(message1);
}
if (stopLooper && (message.what == 2 || message.what == 3)) {
Looper.myLooper().quit();
}
if (message.what != 2) {
return;
} else {
String s = localFilePath;
StringBuilder stringbuilder = new StringBuilder();
String s1 = Application.getAppFilesPath();
StringBuilder stringbuilder1 = stringbuilder.append(s1)
.append("/");
String s2 = Config.WEB_FILE_FOLDER;
String s3 = stringbuilder1.append(s2).toString();
ZipHelper.unZipFolder(s, s3);
}
VersionManager.updateLocalWebFileVersion();
} catch (Exception e) {
// TODO: handle exception
e.printStackTrace();
}
}
Handler2(Handler handler, boolean flag, String localFilePath){
super();
progressHandler = handler;
stopLooper = flag;
this.localFilePath = localFilePath;
}
}
}