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); } }