Android 提示版本更新的实现

应用软件更新一般步骤:

1、首先检测网络是否存在,如果存在进行版本信息检测

		NetworkInfo networkInfo = NetInfo.getNetworkInfo(getActivity());
		if (networkInfo != null) {
			state = networkInfo.getState();
			typeName = networkInfo.getTypeName();
			apnName = networkInfo.getExtraInfo();
			
			if (state == NetworkInfo.State.CONNECTED) {
				if (typeName.equals("MOBILE")) {
					if (apnName.equals("ctnet") || apnName.equals("cmnet") || apnName.equals("internet")) {
						checkUpdate();
					} else {
						setNet();
					}
				} else {
					checkUpdate();
				}
			} else {
				Message message = new Message();
				message.what = 102;
				handler.sendMessage(message);
			}
		} else {
			Message message = new Message();
			message.what = 102;
			handler.sendMessage(message);
		}

2、检测当前版本的信息AndroidManifest.xml-->manifest-->android:versionName,我使用的是

    android:versionCode="99"
    android:versionName="3.0.0">

3、从服务器获取版本号(版本号存在于xml文件中)并与当前检测到的版本进行匹配,如果不匹配,提示用户进行升级,如果匹配则进入程序主界面。

	private void checkUpdate() {
		//统计用户打开客户端的量
		UserController.commitUserOpenInfo(getActivity());
		//获取服务器端apk版本号
		CommonController.getInstance().getAppVersionCode(getActivity(), versionCodehandler);//获取版本号
	}

4、当提示用户进行版本升级时,如果用户点击了确定,系统将自动从服务器上下载并进行自动升级,如果点击取消将进入程序主界面。

	private Handler versionCodehandler = new Handler(){
		public void handleMessage(android.os.Message msg) {
			versionCode = (Integer)msg.obj;//返回的数值为版本号
			if(pinfo.versionCode < versionCode) {
				CommonController.getInstance().getAppUpdates(getActivity(), updateInfohandler);
			} 
			System.out.println("versionCode = " + versionCode);
		};	
	};

去下载更新

	private Handler updateInfohandler = new Handler(){
		public void handleMessage(android.os.Message msg) {
			updateInfo = (String)msg.obj;
			updateInfo = updateInfo.replace("\\n", "\n");
			
			new AlertDialog.Builder(getActivity()).setTitle("提示").setMessage(updateInfo)    
			   .setPositiveButton("确定", new DialogInterface.OnClickListener() {     
			      @Override     
			       public void onClick(DialogInterface dialog, int which) { 
			           openURL(DamaiDataAccessApi.APK_DOWNLOAD_ADDRESS);//下载更新
			       }     
			   }).setNegativeButton("取消", new DialogInterface.OnClickListener() { 
				   
			       public void onClick(DialogInterface dialog, int whichButton) {     
						handler.sendEmptyMessage(0);
			       } 
			   })
			   .setCancelable(false)
			   .create().show();
		};	
	};

更新实现方式

	final void openURL(String url) {
		launchIntent(new Intent(Intent.ACTION_VIEW, Uri.parse(url)));
	}
	
	void launchIntent(Intent intent) {
	    if (intent != null) {
	      intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_WHEN_TASK_RESET);
	      try {
	    	  startAnimaActivity.startActivity(intent);
		    	  try {
		    		  //这个是程序中跳转到首页代码,这里加上是为了手机在浏览器页面点击返回的时候能够回到自己的客户端首页
		    		  FragmentTransaction ft = getFragmentManager().beginTransaction();
		    		  AnimationUtil.startFragmentsAnimationWithFadeInFadeOut(ft);
		    		  MainFragment mf = new MainFragment();
		    		  ft.add(R.id.fragmentRoot, mf, FragmentFlagNameList.MAIN);
		    		  ft.addToBackStack(FragmentFlagNameList.MAIN);
		    		  ft.commit();
					} catch (Exception e) {
						// TODO: handle exception
					}
	      } catch (ActivityNotFoundException e) {
	      }
	    }
	}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值