編輯:關於Android編程
每一個應用都是具備一個功能,那就是版本更新,我記得我之前在面試的時候,面試官讓我介紹一下應用版本更新的一些具體操作。我當時因為做過這個功能,所以回答的還是很流暢,現在我把這個分享給大家,需要能夠共同進步。
我當時是這麼說的:
首先呢,我們是應該在用戶登錄後,在首頁執行檢查版本信息的操作,具體是,獲取到本地的版本號後,提交給服務器進行判斷,然後後台來告訴我們當前版本是否為最新版本,緊接著我們拿到下載地址,執行下載的操作,具體的可以使用輸入輸出流來對文件進行存儲和讀取,為了方便下載,我們還可以使用一個第三方框架: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的框架,所以沒有這個框架是使用不了的。
最後我附上源代碼,以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持本站。
在上一篇文章中介紹了使用非RxJava環境下,使用Handler機制SyncBarrier的特性實現預加載功能的方法。在RxJava的環境下使用BehaviorSubje
這篇博客為大家介紹一個android常見的功能——ListView下拉刷新:首先下拉未松手時候手機顯示這樣的界面:下面的代碼是自定的扎樣的控件:<span >
Android Studio常用插件轉載請注明出處: http://blog.csdn.net/crazy1235/article/details/48598803不得不
本文實例講述了Android Activity啟動模式之singleTop。分享給大家供大家參考,具體如下:在前面文章《Android Activity啟動模式之stan