1、升级流程分析
2、Android通过URL获取网络资源
JSONObject来解析Json字符串
//创建URL对象 //本机地址用localhost, 但是如果用模拟器加载本机的地址时,可以用ip(10.0.2.2)来替换 URL url=new URL("http://10.0.2.2:8080/update.json"); //第一步是creat HttpURLConnection conn = (HttpURLConnection) url.openConnection(); conn.setRequestMethod("GET");//设置请求方法 conn.setConnectTimeout(5000);//设置连接超时 conn.setReadTimeout(5000); conn.connect();// 连接服务器 int responseCode = conn.getResponseCode();// 获取响应码 if(responseCode==200){ InputStream inputStream=conn.getInputStream(); String result=StreamUtils.readFormStream(inputStream); // 解析json JSONObject jo=new JSONObject(result); String versionName = jo.getString("versionName"); versionCode=jo.getInt("versionCode"); description=jo.getString("description"); String downloadUrl=jo.getString("downloadUrl"); if(versionCode>getVersionCode()){ msg.what=CODE_UPDATE_DIALOG; }else{ msg.what = CODE_ENTER_HOME; } }
3、连接网络时候要在线程中,如果更新界面也要在线程中,所以要使用Handler和Message结合,使用Handle对象把Message发送出去,在Handle对界面进行更新。
Handler handler=new Handler(){ public void handleMessage(Message msg) { switch(msg.what){ case CODE_UPDATE_DIALOG: showUpdateDailog(); break; case CODE_URL_ERROR: Toast.makeText(SplashActivity.this, "网址错误", Toast.LENGTH_SHORT).show(); enterHome(); break; case CODE_ENTER_HOME: enterHome(); break; case CODE_NET_ERROR: Toast.makeText(SplashActivity.this, "没有网络", Toast.LENGTH_SHORT).show(); enterHome(); break; case CODE_JSON_ERROR: Toast.makeText(SplashActivity.this, "JSON解析错误", Toast.LENGTH_SHORT).show(); enterHome(); break; } }; };
4、使用xUtils组件进行大文件的上传下载。
HttpUtils http = new HttpUtils(); HttpHandler handler = http.download("http://apache.dataguru.cn/httpcomponents/httpclient/source/httpcomponents-client-4.2.5-src.zip", "/sdcard/httpcomponents-client-4.2.5-src.zip", true, // 如果目标文件存在,接着未完成的部分继续下载。服务器不支持RANGE时将从新下载。 true, // 如果从请求返回信息中获取到文件名,下载完成后自动重命名。 new RequestCallBack<File>() { @Override public void onStart() { testTextView.setText("conn..."); } @Override public void onLoading(long total, long current, boolean isUploading) { testTextView.setText(current + "/" + total); } @Override public void onSuccess(ResponseInfo<File> responseInfo) { testTextView.setText("downloaded:" + responseInfo.result.getPath()); } @Override public void onFailure(HttpException error, String msg) { testTextView.setText(msg); } });
时间: 2024-10-03 15:00:32