Android(2)—Mono For Android App版本自動更新


  0.前言

  公司Android查詢的項目已經開始,整體采用Java后台+App前台來實現,由於項目小,App這塊就我一個人開發,首先需要研究的是:Android版本的更新升級問題;本人經過近一周的學習整理,

終於有了個Demo,開發環境:VS2012+Mono4.8.00013破解版  測試手機:三星I9220 Note1

 

  1.已實現的功能和邏輯

  1)采用后台服務的方式進行下載

  2)下載過程中通知欄顯示,並顯示下載進度

  3)下載界面采用異步方式更新進度條

  4)下載完成后點擊進行安裝-啟動新版本

 

  2.已知BUG和待完善的地方

  1)BUG-從通知欄進入更新界面后,然后按返回鍵-接着再從通知欄進入更新界面,更新界面的數據就完全被初始化了

  2)待完善-更新過程中切換通知欄和界面間有點卡

  3)待完善-下載完成后點擊通知欄,通知欄的信息未消失

  4)待完善-安裝完成后未刪除下載的程序

  5)待完善-下載過程中需要在通知欄一直顯示,類似於微信未讀信息的顯示

  6)待完善-未添加下載過程中暫停的操作

  7)待完善-網絡異常及超時未處理

 

  3.程序實現(1)- 更新邏輯

  谷歌建議我們使用VersionCode自增來表明版本升級,無論是大的改動還是小的改動,而VersionName是顯示給用戶的軟件版本。所以我們選擇VersionCode作為我們定義版本升級的參數。

  而定義VersionCode是在AndroidManifest.xml文件中manifest節點中增加android:versionCode="1" android:versionName="1.0",然后與服務器端版本進行比較,實現如下:

      

 

  

  4.程序實現(2)- 創建服務

  為了在更新的過程中用戶能夠同時操作App,我們需要將下載的過程用服務來實現,服務中需要做的就是通知欄顯示、下載更新和刷新下載進度全局變量,以便下載界面獲取;

                 

 

  5.程序實現(3)- 異步刷新進度條

  為了友好地用戶操作,下載過程中需要刷新界面中的進度條和文本信息,以告訴用戶下載未停止,這里采用的是異步的方式,異步DoInBackground方法中需要執行PublishProgress函數

OnProgressUpdate方法才會起作用,可以理解為后台推送進度的更改,這樣才會觸發OnProgressUpdate事件;

   

 

  6.程序實現(4)- 下載完成后進行安裝

  下載完成后需要讓用戶安裝程序,安裝的代碼如下,我之所以單獨帖出來,是因為這個地方卡了很久,之前就少了一句,希望對大家有所幫助:

1  public static void InstallNewApk(Context m_Context)
2 {
3     Intent ite = new Intent(Intent.ActionView);
4     string filePath = m_Context.Resources.GetString(Resource.String.FilePath);
5     var uriPath = Android.Net.Uri.Parse(@"file://" + filePath);
6      ite.SetDataAndType(uriPath, @"application/vnd.android.package-archive");
7      ite.SetFlags(ActivityFlags.NewTask);//這句很關鍵,沒有這句安裝完成后不會彈出“完成”和“打開”的對話框;
8      m_Context.StartActivity(ite);
9 }

   

  7.測試方法  

  本地安裝1.0版本,然后將2.0的版本放到服務端,配置String.xml里的DownLoadUrl參數,這樣就可以進行測試了,該程序只在內網WLAN下測試完成,其他測試需要繼續進行;

 

  8.共同進步

  源碼的下載地址為:http://pan.baidu.com/s/1tfHpW 我希望有需要的同學可以下載並完善這個Demo,我之后會把更新的這些信息放在本博文的后面,希望各位大牛不吝惜自己的知識,共同學習;

代碼中有不恰當地方希望各位同學熱情指出;

 

  9.小結&致謝

  在研究該功能時,參考的資料大多是Java的,轉換過程有點累人,個別資料都還是比較有參考價值的,感謝這些作者,特別感謝網友【綠豆莢】、【/aiq十三樓丶樓主】的不吝指教。

 

  10.BUG修改&細節完善 (期待各位同學的解答)

  

    

 

  


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM