歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
您现在的位置: Linux教程網 >> UnixLinux >  >> Linux編程 >> Linux編程

Android自動檢測版本及自動升級

步驟:

1.檢測當前版本的信息AndroidManifest.xml-->manifest-->android:versionName。

2.從服務器獲取版本號(版本號存在於xml文件中)並與當前檢測到的版本進行匹配,如果不匹配,提示用戶進行升級,如果匹配則進入程序主界面。

3.當提示用戶進行版本升級時,如果用戶點擊了確定,系統將自動從服務器上下載並進行自動升級,如果點擊取消將進入程序主界面。

效果圖:

      

    

獲取當前程序的版本號:

  1. /* 
  2.  * 獲取當前程序的版本號  
  3.  */  
  4. private String getVersionName() throws Exception{  
  5.     //獲取packagemanager的實例    
  6.     PackageManager packageManager = getPackageManager();  
  7.     //getPackageName()是你當前類的包名,0代表是獲取版本信息   
  8.     PackageInfo packInfo = packageManager.getPackageInfo(getPackageName(), 0);  
  9.     return packInfo.versionName;   
  10. }  
獲取服務器端的版本號:
  1. /* 
  2.  * 用pull解析器解析服務器返回的xml文件 (xml封裝了版本號) 
  3.  */  
  4. public static UpdataInfo getUpdataInfo(InputStream is) throws Exception{  
  5.     XmlPullParser  parser = Xml.newPullParser();    
  6.     parser.setInput(is, "utf-8");//設置解析的數據源    
  7.     int type = parser.getEventType();  
  8.     UpdataInfo info = new UpdataInfo();//實體   
  9.     while(type != XmlPullParser.END_DOCUMENT ){  
  10.         switch (type) {  
  11.         case XmlPullParser.START_TAG:  
  12.             if("version".equals(parser.getName())){  
  13.                 info.setVersion(parser.nextText()); //獲取版本號   
  14.             }else if ("url".equals(parser.getName())){  
  15.                 info.setUrl(parser.nextText()); //獲取要升級的APK文件   
  16.             }else if ("description".equals(parser.getName())){  
  17.                 info.setDescription(parser.nextText()); //獲取該文件的信息   
  18.             }  
  19.             break;  
  20.         }  
  21.         type = parser.next();  
  22.     }  
  23.     return info;  
  24. }  
從服務器下載apk:
  1. public static File getFileFromServer(String path, ProgressDialog pd) throws Exception{  
  2.     //如果相等的話表示當前的sdcard掛載在手機上並且是可用的   
  3.     if(Environment.getExternalStorageState().equals(Environment.MEDIA_MOUNTED)){  
  4.         URL url = new URL(path);  
  5.         HttpURLConnection conn =  (HttpURLConnection) url.openConnection();  
  6.         conn.setConnectTimeout(5000);  
  7.         //獲取到文件的大小    
  8.         pd.setMax(conn.getContentLength());  
  9.         InputStream is = conn.getInputStream();  
  10.         File file = new File(Environment.getExternalStorageDirectory(), "updata.apk");  
  11.         FileOutputStream fos = new FileOutputStream(file);  
  12.         BufferedInputStream bis = new BufferedInputStream(is);  
  13.         byte[] buffer = new byte[1024];  
  14.         int len ;  
  15.         int total=0;  
  16.         while((len =bis.read(buffer))!=-1){  
  17.             fos.write(buffer, 0, len);  
  18.             total+= len;  
  19.             //獲取當前下載量   
  20.             pd.setProgress(total);  
  21.         }  
  22.         fos.close();  
  23.         bis.close();  
  24.         is.close();  
  25.         return file;  
  26.     }  
  27.     else{  
  28.         return null;  
  29.     }  
  30. }  
Copyright © Linux教程網 All Rights Reserved