package net.basilwang.sever;
import java.io.IOException;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
import net.basilwang.R;
import net.basilwang.dao.Preferences;
import net.basilwang.utils.PreferenceUtils;
import org.apache.http.HttpResponse;
import org.apache.http.HttpStatus;
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.util.EntityUtils;
import android.app.AlertDialog;
import android.app.AlertDialog.Builder;
import android.content.Context;
import android.content.DialogInterface;
import android.content.DialogInterface.OnClickListener;
import android.os.AsyncTask;
import android.preference.PreferenceManager;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
import android.widget.CheckBox;
public class GetVersionTask extends AsyncTask<Object, Integer, Double> {
private Boolean occurTip;
private Double olderVersion;
private Context mContext;
private DownloadTask downloadTask;
// 返回的安装包url
private String apkUrl = "http://down.mumayi.com/120469";
public GetVersionTask(Context context) {
this.mContext = context;
}
@Override
protected Double doInBackground(Object... params) {
olderVersion = (Double) params[1];
occurTip = (Boolean) params[2];
Double result = null;
HttpClient client = new DefaultHttpClient();
HttpGet get = new HttpGet((String) params[0]);
try {
HttpResponse response = client.execute(get);
if (response.getStatusLine().getStatusCode() == HttpStatus.SC_OK) {
result = filterHtml(EntityUtils.toString(response.getEntity()));
}
} catch (ClientProtocolException e) {
e.printStackTrace();
Log.v("error1", e.toString());
} catch (IOException e) {
e.printStackTrace();
Log.v("error2", e.toString());
}
return result;
}
@Override
protected void onPostExecute(Double result) {
if (olderVersion<result && !occurTip) {
Log.v("equals", "检测到新版本");
View v = LayoutInflater.from(mContext).inflate(
R.layout.dialogcontent, null);
final CheckBox neverOccur = (CheckBox) v.findViewById(R.id.neverTip);
AlertDialog.Builder builder = new Builder(mContext);
builder.setTitle("软件版本更新");
builder.setMessage("有最新的软件包哦,亲快下载吧~\n(新版本3.61建议先卸载旧版本再安装)");
builder.setView(v);
// builder.setInverseBackgroundForced(true);
builder.setPositiveButton("立即下载", new OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
dialog.dismiss();
downloadTask = new DownloadTask(mContext);
downloadTask.showDownloadDialog();
}
});
builder.setNegativeButton("稍后再说", new OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
if(neverOccur.isChecked())
setNeverOccur();
dialog.dismiss();
}
});
builder.show();
}
super.onPostExecute(result);
}
private Double filterHtml(String source) {
Pattern p = Pattern.compile("(\\d\\.\\d*)_");
Matcher match = p.matcher(source);
Double version = null;
while (match.find()) {
version=Double.valueOf(match.group(1));
}
Log.v("filterHtml", "succeed");
return version;
}
private void setNeverOccur() {
PreferenceUtils.modifyBooleanValueInPreferences(mContext, Preferences.NEVER_OCCUR_UPDATE_TIP, true);
}
}