获取网络软件更新信息 并发送消息 通知 handler 更新UI

private void checkUpdate() {
		new Thread() {

			public void run() {
				long currentTime = System.currentTimeMillis();
				Message msg = Message.obtain();
				try {
					URL url = new URL(getString(R.string.serverurl));
					HttpURLConnection conn = (HttpURLConnection) url
							.openConnection();
					conn.setRequestMethod("GET");
					conn.setConnectTimeout(4000);
					int code = conn.getResponseCode();
					if (code == 200) {
						// 联网成功
						InputStream is = conn.getInputStream();
						String infoString = StreamTools.readFromStream(is);
						// System.out.println("联网成功--------->"+infoString);
						JSONObject jsonObject = new JSONObject(infoString);
						String version = jsonObject.optString("version");
						description = jsonObject.optString("description");
						apkurl = jsonObject.optString("apkurl");

						System.out.println("----->" + version + description
								+ apkurl);

						// 校验是否有新版本
						if (getVersionName().equals(version)) {
							// 版本一致 进入主页面
							msg.what = GOTO_HOME;

						} else {
							// 更新版本 弹出对话框提示
							msg.what = UPDATE_VERSION;
						}
					}

				} catch (MalformedURLException e) {
					msg.what = URL_ERROR;
					e.printStackTrace();
				} catch (IOException e) {
					msg.what = IO_ERROR;
					e.printStackTrace();
				} catch (JSONException e) {
					msg.what = JSON_ERROR;
					e.printStackTrace();
				} finally {
					long endTime = System.currentTimeMillis();
					long time = currentTime - endTime;
					if (time < 2000) {
						try {
							Thread.sleep(2000 - time);
						} catch (InterruptedException e) {
							e.printStackTrace();
						}
					}
					handler.sendMessage(msg);

				}

			};

		}.start();

	}


//弹出更新对话框   

/**
	 * 弹出升级对话框
	 * */
	protected void showUpdateDialog() {
		AlertDialog.Builder builder = new Builder(this);
		builder.setTitle("有新版本!!");
//		builder.setCancelable(false);
		builder.setMessage(description);
		builder.setNegativeButton("下次再说", new OnClickListener() {

			@Override
			public void onClick(DialogInterface dialog, int which) {

				dialog.dismiss();
				gotoHome();
			}
		});
		builder.setPositiveButton("立刻升级", new OnClickListener() {

			@Override
			public void onClick(DialogInterface dialog, int which) {
				// 进行升级
				if (Environment.getExternalStorageState().equals(
						Environment.MEDIA_MOUNTED)) {
					// 下载软件并安装
					FinalHttp finalHttp = new FinalHttp();
					finalHttp.download(apkurl, Environment
							.getExternalStorageDirectory().getAbsolutePath()
							+ "/mobiesafe2.0.apk", new AjaxCallBack<File>() {

								@Override
								public void onFailure(Throwable t, int errorNo,
										String strMsg) {
									t.printStackTrace();
									Toast.makeText(getApplicationContext(), "下载失败了", 1).show();
									super.onFailure(t, errorNo, strMsg);
								}

								@Override
								public void onLoading(long count, long current) {
									int progress = (int) (current/count*100);
									tv_update_info.setText("下载进度: "+progress+"%");
									super.onLoading(count, current);
								}

								@Override
								public void onSuccess(File t) {
									
									Toast.makeText(getApplicationContext(), "成功", 0).show();
									installApk(t);
									super.onSuccess(t);
								}

								private void installApk(File t) {
									Intent intent = new Intent();
									intent.setAction("android.intent.action.VIEW");
									intent.addCategory("android.intent.category.DEFAULT");
									intent.setDataAndType(Uri.fromFile(t),  
							                "application/vnd.android.package-archive");  
									startActivity(intent);
								}
						
					});
					
					
				} else {
					Toast.makeText(getApplicationContext(), "sd卡不存在", 0).show();
					gotoHome();
				}

			}
		});
		builder.setOnCancelListener(new OnCancelListener() {
			
			@Override
			public void onCancel(DialogInterface dialog) {
				gotoHome();
				dialog.dismiss();
			}
		});
		builder.show();
	}

文件下载  使用afinal框架    也可以使用Xutils  但是这里 没使用  日后  使用试试   

弹出框 使用

AlertDialog.Builder  // 其中  要使其点击返回按钮  跳转   要 监听 他的 <span style="font-family: Arial, Helvetica, sans-serif;">setOnCancelListener事件   </span>
<span style="font-family: Arial, Helvetica, sans-serif;">
</span>
//下载完成后 安装apk 其实 就是启动一个Intent   卸载也是一样   
//Intent如下
private void installApk(File t) {
<span style="white-space:pre">	</span>Intent intent = new Intent();
<span style="white-space:pre">	</span>intent.setAction("android.intent.action.VIEW");
        intent.addCategory("android.intent.category.DEFAULT");
<span style="white-space:pre">	</span>intent.setDataAndType(Uri.fromFile(t),  
       "application/vnd.android.package-archive");  
<span style="white-space:pre">	</span>startActivity(intent);
}

你可能感兴趣的:(获取网络软件更新信息 并发送消息 通知 handler 更新UI)