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) {
	      }
	    }
	}


發佈了32 篇原創文章 · 獲贊 3 · 訪問量 55萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章