package com.partynetwork.iparty.base;
import com.partynetwork.dataprovider.DataProvider.IJsonResultListener;
import com.partynetwork.dataprovider.json.NetworkEntity;
import com.partynetwork.dataprovider.json.struct.Login_loginRequest;
import com.partynetwork.dataprovider.json.struct.Public_checkVersionRequest;
import com.partynetwork.dataprovider.json.struct.Public_checkVersionResponse;
import com.partynetwork.dataprovider.util.AppConst;
import com.partynetwork.dataprovider.util.IPartyUtil;
import com.partynetwork.dataprovider.util.SharePreferenceUtil;
import com.partynetwork.dataprovider.util.StringUtil;
import com.partynetwork.dataprovider.util.T;
import com.partynetwork.iparty.R;
import com.partynetwork.iparty.app.AppContext;
import com.partynetwork.iparty.helper.IntentHelper;
import com.partynetwork.iparty.info.UpdataInfo;
import com.partynetwork.service.UpdateService;
import android.app.Activity;
import android.app.AlertDialog.Builder;
import android.content.DialogInterface;
import android.content.DialogInterface.OnClickListener;
import android.content.pm.PackageInfo;
import android.content.pm.PackageManager.NameNotFoundException;
import android.content.Intent;
/**
* APK更新管理类
*/
public class UpdateManager implements IJsonResultListener {
// 上下文对象
private Activity mActivity;
// 更新版本信息对象
private UpdataInfo info = null;
/** 是否强制更新 */
private boolean isMust;
/**
* 参数为Context(上下文activity)的构造函数
*
* @param context
*/
public UpdateManager(Activity activity) {
this.mActivity = activity;
}
public void checkUpdate() {
/** 发送检查版本接口 */
Public_checkVersionRequest request = new Public_checkVersionRequest();
request.setOs("android");
AppContext.getInstance().getmDataProvider()
.getJsonFromNetwork(request, this);
}
/**
* 提示更新对话框
*
* @param info
* 版本信息对象
*/
private void showUpdateDialog() {
Builder builder = new Builder(mActivity);
builder.setTitle("版本更新");
builder.setMessage(info.getChangelog());
builder.setPositiveButton("更新", new OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
dialog.dismiss();
// 弹出下载框
Intent updateIntent = new Intent(UpdateService.ACTION);
updateIntent.putExtra(UpdateService.VERSION_NAME,
info.getVersionName());
updateIntent.putExtra(UpdateService.DOWN_URL,
info.getDownloadUrl());
mActivity.startService(updateIntent);
checkLogin();
}
});
if (!isMust) {
builder.setNegativeButton("以后再说", new OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
dialog.dismiss();
checkLogin();
}
});
}
builder.create().show();
}
/**
* 登陆
*/
private void checkLogin() {
SharePreferenceUtil sp = new SharePreferenceUtil(mActivity,
AppConst.PREFERENCES_NAME);
String name = sp.getAccount();
String password = sp.getPassword();
if (!name.equals("") && !password.equals("")) {
int type = 0;
if (StringUtil.filterEmail(name)) {
type = 1;
} else {
type = 0;
}
// 开始登陆
IPartyUtil.getInstance().login(type, name, password, this);
} else {
IntentHelper.goLoginActivity(mActivity);
mActivity.finish();
}
}
@Override
public void onNetworkRequest() {
}
@Override
public void onResultSuccess(NetworkEntity entity) {
if (entity.getRequest().getAction()
.equals(new Public_checkVersionRequest().getAction())) {
Public_checkVersionResponse response = (Public_checkVersionResponse) entity
.getResponse();
info = response.getDetails();
if (info != null) {
// 当前服务器版本
String serverVersion = info.getNewVersion();
// 最低支持版本
String lastVersion = info.getLastVersion();
// 本地版本
int localVersionCode = 0;
try {
PackageInfo info = mActivity.getPackageManager()
.getPackageInfo(mActivity.getPackageName(), 0);
localVersionCode = info.versionCode;
} catch (NameNotFoundException e) {
e.printStackTrace(System.err);
}
// 当前服务器版本
int serverVersionCode = localVersionCode;
// 最低支持版本
int lastVersionCode = localVersionCode;
try {
serverVersionCode = Integer.parseInt(serverVersion);
lastVersionCode = Integer.parseInt(lastVersion);
} catch (NumberFormatException e) {
}
if (serverVersionCode > localVersionCode) {
if (lastVersionCode > localVersionCode) {
isMust = true;
}
// 如果当前版本号小于服务端版本号,则弹出提示更新对话框
showUpdateDialog();
} else {
checkLogin();
}
} else {
checkLogin();
}
} else if (entity.getRequest().getAction()
.equals(new Login_loginRequest().getAction())) {
// Login_loginResponse loginResponse = (Login_loginResponse) entity
// .getResponse();
// 全局保存当前用户的信息
// 登陆到openfire
// OpenfireLoginTask task = new OpenfireLoginTask(mActivity, ""
// + BaseApplication.getInstance().getmUserInfo().getUserId(),
// BaseApplication.getInstance().getSpUtil().getPassword());
// task.execute();
IntentHelper.goMainActivity(mActivity);
mActivity.finish();
}
}
@Override
public void onResultFail(String result) {
// Util.showMsg(mActivity, "服务器最新版本:" + result);
T.showTips(mActivity, R.drawable.tips_error, result);
IntentHelper.goLoginActivity(mActivity);
}
}