六、下載apk(afinal架構實現,多線程斷點下載) afinal簡介:http://blog.csdn.net/dongdong230/article/details/11751003把afinal的jar包放到工程的libs目錄下。apk檔案在工程的bin目錄下,在資訊清單檔中變更檔版本,再將更改後的apk檔案放進tomcat環境下的工程中,這樣就得到了升級後的版本檔案。 具體代碼:
FinalHttp finalHttp = new FinalHttp(); //建立FinalHttp對象,用於多線程斷點下載 File file = new File(Environment.getExternalStorageDirectory(),"temp.apk"); //設定存放目錄及存放檔案的名稱 finalHttp.download(updateInfo.getApkurl(), file.getAbsolutePath(), new AjaxCallBack<File>(){ //下載,複寫3方法 /** * 若下載失敗,列印出錯誤 */ @Override public void onFailure(Throwable t, int errorNo, String strMsg) { t.printStackTrace(); super.onFailure(t, errorNo, strMsg); } /** * 檔案下載過程中調用的方法(進度) * @param count 檔案總長度 * @param current 當前下載的進度 */ @Override public void onLoading(long count, long current) { int progress = (int)(current*100/count); tv_splash_progress.setText("下載進度:"+progress+"%"); super.onLoading(count, current); } /** * 檔案下載成功調用的方法 */ @Override public void onSuccess(File t) { Toast.makeText(getApplicationContext(), "下載成功,請進行替換安裝", Toast.LENGTH_SHORT).show(); super.onSuccess(t); } });
在布局檔案中加一個TextView用於顯示下載進度,開始設為隱藏:具體代碼:
<TextView android:id="@+id/tv_splash_progress" android:layout_width="wrap_content" android:layout_height="wrap_content" android:textColor="#ff0000" android:visibility="invisible" android:layout_below="@+id/progressBar1" android:layout_centerHorizontal="true" android:layout_marginTop="16dp"/>
下載之前將其設為可見,即
tv_splash_progress.setVisibility(View.VISIBLE);
注意設定寫sdcard的許可權:WRITE_EXTERNAL_STORAGE