非常實用的小功能 Android應用版本的更新執行個體_Android

來源:互聯網
上載者:User

每一個應用都是具備一個功能,那就是版本更新,我記得我之前在面試的時候,面試官讓我介紹一下應用版本更新的一些具體操作。我當時因為做過這個功能,所以回答的還是很流暢,現在我把這個分享給大家,需要能夠共同進步。

我當時是這麼說的:

首先呢,我們是應該在使用者登入後,在首頁執行檢查版本資訊的操作,具體是,擷取到本地的版本號碼後,提交給伺服器進行判斷,然後後台來告訴我們目前的版本是否為最新版本,緊接著我們拿到下載地址,執行下載的操作,具體的可以使用輸入輸出資料流來對檔案進行儲存和讀取,為了方便下載,我們還可以使用一個第三方架構:xutils,有這個架構,可以更好的實現斷點續傳等等一下功能,最後我們將下載好的檔案,調用系統的安裝介面,進行安裝,自此我們的更新操作全部完成,當然,有一個很重要的地方,那就是別忘了添加許可權:

    <uses-permission android:name="android.permission.INTERNET"/>
    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
    <uses-permission android:name="android.permission.MOUNT_UNMOUNT_FILESYSTEMS"/>

一般情況下,這麼回答就差不多可以達到效果了。

下面我們看看具體的代碼實現,我這裡以“福士點評”的APP下載為案例
看看activity的操作:

public class MainActivity extends Activity {  private ProgressDialog dialog;  @Override  protected void onCreate(Bundle savedInstanceState) {    super.onCreate(savedInstanceState);    setContentView(R.layout.activity_main);    initView();  }  private void initView() {    AlertDialog.Builder dialogTips= new AlertDialog.Builder(this);    dialogTips.setTitle("提示");    dialogTips.setMessage("檢測到有新的版本,是否更新?");    dialogTips.setNegativeButton("取消", null);    dialogTips.setPositiveButton("更新", new OnClickListener() {      @Override      public void onClick(DialogInterface arg0, int arg1) {        startDownload();      }    });    dialogTips.show();    dialog=new ProgressDialog(this);    dialog.setProgressStyle(ProgressDialog.STYLE_HORIZONTAL);    dialog.setMessage("更新應用");    dialog.setMax(100);  }  private void startDownload(){    //定義儲存的檔案地址為根目錄    File path = new File(Environment.getExternalStorageDirectory(),        "福士點評"+ ".apk");    httpDownLoad(path.getPath(), "http://www.wandoujia.com/apps/com.dianping.v1/download");  }  /**   * 下載的方法   * @param path 檔案儲存的路徑   * @param url 下載的地址   */  private void httpDownLoad(String path, String url) {    HttpUtils http = new HttpUtils();    http.download(url, path, true, true, new RequestCallBack<File>() {      @Override      public void onStart() {        super.onStart();        dialog.show();      }      @Override      public void onLoading(long total, long current, boolean isUploading) {        int index = (int) (current * 100 / total);        dialog.setProgress(index);      }      @Override      public void onSuccess(ResponseInfo<File> responseInfo) {        //擷取到安裝包後,調用系統的android安裝apk介面進行安裝 這是固定格式        Intent intent = new Intent(Intent.ACTION_VIEW);        intent.setDataAndType(            Uri.fromFile(new File(responseInfo.result.getPath())),            "application/vnd.android.package-archive");        startActivity(intent);        dialog.dismiss();        MainActivity.this.finish();      }      @Override      public void onFailure(          com.lidroid.xutils.exception.HttpException arg0, String arg1) {        File path = new File(Environment.getExternalStorageDirectory(),            "福士點評" + ".apk");        Toast.makeText(MainActivity.this, "下載失敗"+arg1, 0).show();        dialog.dismiss();        path.delete();      }    });  }}

這裡的注釋也是相當的清晰,我就不在贅述,但是有一個要注意的地方,我這裡是用到了xutils的架構,所以沒有這個架構是使用不了的。

最後我附上原始碼,以上就是本文的全部內容,希望對大家的學習有所協助,也希望大家多多支援雲棲社區。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.