packagecn.edu.aynu.rjxy.activity;importjava.io.File;importjava.io.IOException;importjava.net.HttpURLConnection;importjava.net.MalformedURLException;importjava.net.URL;importorg.json.JSONException;importorg.json.JSONObject;importcom.lidroid.xutils.HttpUtils;importcom.lidroid.xutils.exception.HttpException;importcom.lidroid.xutils.http.ResponseInfo;importcom.lidroid.xutils.http.callback.RequestCallBack;importcn.edu.aynu.rjxy.paths.Paths;importcn.edu.aynu.rjxy.utils.StreamUtils;importcn.edu.aynu.rjxy.utils.ToastUtils;importandroid.os.Bundle;importandroid.os.Environment;importandroid.os.Handler;importandroid.os.Message;importandroid.app.Activity;importandroid.app.AlertDialog;importandroid.content.DialogInterface;importandroid.content.DialogInterface.OnClickListener;importandroid.content.Intent;importandroid.content.pm.PackageInfo;importandroid.content.pm.PackageManager;importandroid.content.pm.PackageManager.NameNotFoundException;importandroid.view.Menu;importandroid.view.View;importandroid.view.Window;importandroid.widget.TextView;importandroid.widget.Toast;/** 展示品牌---->初始化数据---->检查版本---->校验合法性*/
public class SplashActivity extendsActivity {private static final int UPDATE_DIALOG = 1;//更新提醒
private static final int NETWORK_ERROR = 2;//网络异常
private static final int JSON_ERROR = 3;//数据解析失败
private static final int URL_ERROR = 4;//网络异常
private static final int ENTER_HOME = 5;//跳转主页面//控件初始化
privateTextView tvVersion;privateTextView tvProgress;//服务器的返回值
private String mVersionName;//成员变量
private intmVersionCode;privateString mDescription;privateString mDownloadUrl;//消息传递
private Handler mHandler = newHandler(){public voidhandleMessage(android.os.Message msg) {switch(msg.what) {caseUPDATE_DIALOG:
showUpdateDialog();break;caseNETWORK_ERROR:
ToastUtils.showToast(getApplicationContext(),"网络异常");
enterHome();break;caseJSON_ERROR:
ToastUtils.showToast(getApplicationContext(),"数据解析失败");
enterHome();break;caseURL_ERROR:
ToastUtils.showToast(getApplicationContext(),"网络连接异常");
enterHome();break;caseENTER_HOME:
enterHome();default:break;
}
};
};
@Overrideprotected voidonCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);
requestWindowFeature(Window.FEATURE_NO_TITLE);
setContentView(R.layout.activity_splash);
tvVersion=(TextView)findViewById(R.id.tv_version);
tvProgress=(TextView)findViewById(R.id.tv_progress);
tvVersion.setText("版本名:"+getVersionName());
checkVersion();//检查版本
}/** 检查版本更新*/
private voidcheckVersion() {//TODO Auto-generated method stub
newThread(){long startTime = System.currentTimeMillis();//开始时间
Message msg = Message.obtain();//获取消息
public voidrun(){try{// URL url = newURL(Paths.downApkPath);
HttpURLConnection conn=(HttpURLConnection)url.openConnection();
conn.setConnectTimeout(2000);//连接网络超时
conn.setReadTimeout(2000);//读取超时
conn.setRequestMethod("GET");//访问方法
conn.connect();//连接网络
int responseCode =conn.getResponseCode();if(responseCode == 200){
String result=StreamUtils.streamToString(conn.getInputStream());
System.out.println("访问成功--->"+result);//json数据解析
JSONObject jo = newJSONObject(result);
mVersionName= jo.getString("versionName");
mVersionCode= jo.getInt("versionCode");
mDescription= jo.getString("description");
mDownloadUrl= jo.getString("downloadUrl");
System.out.println("versionCode--->"+mVersionCode);if (getVersionCode()
System.out.println("有新版本!!!");
msg.what=UPDATE_DIALOG;
}else{
System.out.println("没有新版本!!!");//跳转到主页面
msg.what =ENTER_HOME;
}
}
}catch(MalformedURLException e) {//url异常//TODO Auto-generated catch block
msg.what =URL_ERROR;
e.printStackTrace();
}catch(IOException e) {//网络异常//TODO Auto-generated catch block
msg.what =NETWORK_ERROR;
e.printStackTrace();
}catch(JSONException e) {//json异常//TODO Auto-generated catch block
e.printStackTrace();
msg.what=JSON_ERROR;
}finally{long endTime = System.currentTimeMillis();//访问网络结束时间
long timeUsed = endTime - startTime;//访问网络总的用时
if (timeUsed<2000) {//如果访问网络的时间小于2秒,就展示闪屏页面。目的是凑够两秒,来展示软件的品牌。
try{
Thread.sleep(2000);
}catch(InterruptedException e) {//TODO Auto-generated catch block
e.printStackTrace();
}
}
mHandler.sendMessage(msg);//发送消息
}
}
}.start();
}/** 用于提醒用户更新的提示窗*/
protected voidshowUpdateDialog() {//TODO Auto-generated method stub
AlertDialog.Builder builder = new AlertDialog.Builder(this);
builder.setTitle("发现新版本:"+mVersionName);
builder.setMessage(mDescription);//新版本的描述
builder.setPositiveButton("立即升级", newOnClickListener() {
@Overridepublic void onClick(DialogInterface dialog, intwhich) {//TODO Auto-generated method stub
System.out.println("发现新版本");
downloadApk();
}
});
builder.setNegativeButton("以后再说", newOnClickListener() {
@Overridepublic void onClick(DialogInterface dialog, intwhich) {//TODO Auto-generated method stub
enterHome();
}
});
builder.show();
}/** 下载安装包*/
protected voiddownloadApk(){
String target= Environment.getExternalStorageDirectory().getAbsolutePath()+"/huiyi.apk";
tvProgress.setVisibility(View.VISIBLE);
HttpUtils utils= newHttpUtils();
utils.download(mDownloadUrl, target,new RequestCallBack() {//下载成功
@Overridepublic void onSuccess(ResponseInforesponseInfo) {//TODO Auto-generated method stub
System.out.println("下载成功!!!!");
File result=responseInfo.result;
tvProgress.setVisibility(View.GONE);
enterHome();
}/** 正在下载
* total 文件总大小
* current 当前下载的大小
* isUploading 是否正在上传
* (non-Javadoc)
* @see com.lidroid.xutils.http.callback.RequestCallBack#onLoading(long, long, boolean)*/
public void onLoading(long total, long current, booleanisUploading) {//TODO Auto-generated method stub
super.onLoading(total, current, isUploading);//����ٷֱ�
int percent = (int) ((current*100)/total);
tvProgress.setText("下载进度:"+percent+"%");
}//下载失败
@Overridepublic voidonFailure(HttpException error, String msg) {//TODO Auto-generated method stub
System.out.println("下载失败!!!!");//ToastUtils.showToast(getApplicationContext(),"下载失败!!");
error.printStackTrace();
}
});
}/** 获取版本名*/
privateString getVersionName() {//TODO Auto-generated method stub//获取包管理器
PackageManager pm =getPackageManager();try{
PackageInfo packageInfo= pm.getPackageInfo(getPackageName(), 0);int versionCode = packageInfo.versionCode;//获取版本号
String versionName = packageInfo.versionName;//获取版本名
System.out.println("versionName"+versionName+",versionCode"+versionCode);returnversionName;
}catch(NameNotFoundException e) {//TODO Auto-generated catch block
e.printStackTrace();
}return "";
}/** 获取版本号*/
private intgetVersionCode() {//TODO Auto-generated method stub//获取包管理器
PackageManager pm =getPackageManager();try{
PackageInfo packageInfo= pm.getPackageInfo(getPackageName(), 0);int versionCode = packageInfo.versionCode;//获取版本号
returnversionCode;
}catch(NameNotFoundException e) {//TODO Auto-generated catch block
e.printStackTrace();
}return 0;
}//跳转到主页面
private voidenterHome(){
startActivity(new Intent(this,LoginActivity.class));//开启的新的页面
finish();//结束原来的页面
}
}