android 自動更新的實現

來源:互聯網
上載者:User

標籤:android   c   style   class   blog   code   

主要原理是:

在應用啟動的時候,去取伺服器上版本號碼 ,與當前應用的對比如果有更新則下載

下面這個是擷取當前應用的版本資訊

private void getCurVersion() {        try {            PackageInfo pInfo = context.getPackageManager().getPackageInfo(                    context.getPackageName(), 0);            curVersion = pInfo.versionName;            curVersionCode = pInfo.versionCode;        } catch (NameNotFoundException e) {            Log.e("update", e.getMessage());            curVersion = "1.0.1";            curVersionCode = 1;        }    }

下面則是通過java net包來get版本資訊,進行比較

伺服器端格式如下     version_1.0.2

HttpURLConnection 擷取輸入資料流,再用

BufferedReader 緩衝流,readline成String,再比較

private boolean check_update(){String getstring = null;String version=null;getCurVersion();try {URL myurl=new URL(app_check);HttpURLConnection urlconnection=(HttpURLConnection) myurl.openConnection();urlconnection.setReadTimeout(50000);urlconnection.setConnectTimeout(50000);urlconnection.connect();InputStream in=urlconnection.getInputStream();   BufferedReader buffread;   buffread=new BufferedReader(new InputStreamReader(in,"utf-8"));   String line;line=buffread.readLine();while(line!=null){getstring+=line;line=buffread.readLine();}int index=getstring.indexOf("version_");//2.0.1version=getstring.substring(index+8, index+13);in.close();Log.e("version",version);} catch (MalformedURLException e) {// TODO Auto-generated catch blocke.printStackTrace();} catch (IOException e) {// TODO Auto-generated catch blocke.printStackTrace();}    if(version!=null){if(version.compareTo(curVersion)>0)return true;elsereturn false;    }    else    return false;}

接下來則是彈出一對話方塊以及調用下載線程

private void showdownDialog(){ AlertDialog.Builder dialog = new AlertDialog.Builder(context);          dialog.setTitle("軟體版本更新");          dialog.setMessage("有最新的app更新");         dialog.setNegativeButton("以後再說", new OnClickListener(){@Overridepublic void onClick(DialogInterface arg0, int arg1) {// TODO Auto-generated method stubarg0.dismiss();}              });       dialog.setPositiveButton("確定", new OnClickListener(){@Overridepublic void onClick(DialogInterface dialog, int which) {// TODO Auto-generated method stub//確定裡面調用下載線程,同時顯示下載的那個進度對話方塊dialog.dismiss();cancel=true;downapk();showDownapk();}              });       dialog.show();}

最後則是發出一個Intent廣播

private void setInstall(){
File apkfile = new File(apk_path);  
       if (!apkfile.exists()) {  
           return;  
       }      
       Intent i = new Intent(Intent.ACTION_VIEW);  
       i.setDataAndType(Uri.parse("file://" + apkfile.toString()), "application/vnd.android.package-archive");   
       context.startActivity(i); 
}

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.