网络请求获取新版本信息并显示dialog

来源:互联网 发布:2016网络歌曲打包下载 编辑:程序博客网 时间:2024/06/16 10:00
本人第一次写博客,可能有很多纰漏,大家指教……(本人接触安卓不久,希望大家多多指教)
public class SplashActivity extends Activity {private static final int WHAT_SHOW_UDPATE = 0;private String mNetVersionDesc;private Handler mHandler=new Handler(){public void handleMessage(android.os.Message msg) {//主线程中执行switch (msg.what) {case WHAT_SHOW_UDPATE://显示更新的dialogshowUpdateDialog();break;default:break;}}};private void showUpdateDialog() {AlertDialog.Builder builder = new AlertDialog.Builder(this);builder.setTitle("版本更新提醒");builder.setMessage(mNetVersionDesc);builder.setPositiveButton("更新", new OnClickListener() {@Overridepublic void onClick(DialogInterface dialog, int which) {// TODO Auto-generated method stub}});builder.setNegativeButton("稍后再说", new OnClickListener() {@Overridepublic void onClick(DialogInterface dialog, int which) {// TODO Auto-generated method stub}});builder.show();};@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);//去服务器检测版本(网络请求,需要在子线程中执行)new Thread(new CheckVersionTask()).start();}private class CheckVersionTask implements Runnable{private String mUrl;private Message mObtainMessage;@Overridepublic void run() {// 去服务器获得最新的版本号// 服务器:提供最新的版本信息AndroidHttpClient client = AndroidHttpClient.newInstance("jiong");// 设置超时时间HttpConnectionParams.setConnectionTimeout(client.getParams(),5 * 1000);// 设置请求超时的时长HttpConnectionParams.setSoTimeout(client.getParams(), 5 * 1000);// 设置响应的超时时长//新版本信息String url ="http://localhost:8080/update.json";//get请求HttpGet get=new HttpGet(url);try {//执行请求HttpResponse response = client.execute(get);StatusLine line = response.getStatusLine();//获得返回的结果码int statusCode = line.getStatusCode();if(statusCode==200){//获取成功 HttpEntity entity = response.getEntity(); String string = EntityUtils.toString(entity,"utf-8"); JSONObject jsonObject = new JSONObject(string); //从服务器获取版本号 int netVersionCode = jsonObject.getInt("versionCode"); //获取本地版本号 PackageManager packageManager = getPackageManager(); PackageInfo packageInfo=null; packageInfo = packageManager.getPackageInfo(getPackageName(), 0); int localVersionCode = packageInfo.versionCode; String versionName = packageInfo.versionName;//和本地的版本号进行比较 if(localVersionCode<netVersionCode){ //获取新版本的描述 mNetVersionDesc = jsonObject.getString("VersionDesc"); //更新(由于在子线程中,想更新UI,所以使用handler) mObtainMessage = mHandler.obtainMessage(); //显示更新的dialog mObtainMessage.what=WHAT_SHOW_UDPATE; mObtainMessage.sendToTarget(); }else{ //不需要更新,直接跳到主界面 load2main(); } }else{//获取失败,不需要更新}} catch (IOException e) {e.printStackTrace();} catch (JSONException e) {e.printStackTrace();} catch (NameNotFoundException e) {e.printStackTrace();}}private void load2main() {mHandler.postDelayed(new Runnable() {@Overridepublic void run() {Intent intent = new Intent();intent.setClass(SplashActivity.this, MainActivity.class);startActivity(intent);}}, 500);}}}

0 0
原创粉丝点击