非常實(shí)用的小功能 Android應(yīng)用版本的更新實(shí)例
每一個(gè)應(yīng)用都是具備一個(gè)功能,那就是版本更新,我記得我之前在面試的時(shí)候,面試官讓我介紹一下應(yīng)用版本更新的一些具體操作。我當(dāng)時(shí)因?yàn)樽鲞^(guò)這個(gè)功能,所以回答的還是很流暢,現(xiàn)在我把這個(gè)分享給大家,需要能夠共同進(jìn)步。
我當(dāng)時(shí)是這么說(shuō)的:
首先呢,我們是應(yīng)該在用戶登錄后,在首頁(yè)執(zhí)行檢查版本信息的操作,具體是,獲取到本地的版本號(hào)后,提交給服務(wù)器進(jìn)行判斷,然后后臺(tái)來(lái)告訴我們當(dāng)前版本是否為最新版本,緊接著我們拿到下載地址,執(zhí)行下載的操作,具體的可以使用輸入輸出流來(lái)對(duì)文件進(jìn)行存儲(chǔ)和讀取,為了方便下載,我們還可以使用一個(gè)第三方框架:xutils,有這個(gè)框架,可以更好的實(shí)現(xiàn)斷點(diǎn)續(xù)傳等等一下功能,最后我們將下載好的文件,調(diào)用系統(tǒng)的安裝界面,進(jìn)行安裝,自此我們的更新操作全部完成,當(dāng)然,有一個(gè)很重要的地方,那就是別忘了添加權(quán)限:
<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"/>
一般情況下,這么回答就差不多可以達(dá)到效果了。
下面我們看看具體的代碼實(shí)現(xiàn),我這里以“大眾點(diǎn)評(píng)”的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("檢測(cè)到有新的版本,是否更新?"); 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("更新應(yīng)用"); dialog.setMax(100); } private void startDownload(){ //定義保存的文件地址為根目錄 File path = new File(Environment.getExternalStorageDirectory(), "大眾點(diǎn)評(píng)"+ ".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) { //獲取到安裝包后,調(diào)用系統(tǒng)的android安裝apk界面進(jìn)行安裝 這是固定格式 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(), "大眾點(diǎn)評(píng)" + ".apk"); Toast.makeText(MainActivity.this, "下載失敗"+arg1, 0).show(); dialog.dismiss(); path.delete(); } }); } }
這里的注釋也是相當(dāng)?shù)那逦揖筒辉谫樖?,但是有一個(gè)要注意的地方,我這里是用到了xutils的框架,所以沒(méi)有這個(gè)框架是使用不了的。
最后我附上源代碼,以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
- Android編程實(shí)現(xiàn)自動(dòng)檢測(cè)版本及自動(dòng)升級(jí)的方法
- android實(shí)現(xiàn)程序自動(dòng)升級(jí)到安裝示例分享(下載android程序安裝包)
- Android編程實(shí)現(xiàn)應(yīng)用自動(dòng)更新、下載、安裝的方法
- Android App實(shí)現(xiàn)應(yīng)用內(nèi)部自動(dòng)更新的最基本方法示例
- 安卓(Android)應(yīng)用版本更新方法
- Android應(yīng)用自動(dòng)更新功能實(shí)現(xiàn)的方法
- Android應(yīng)用APP自動(dòng)更新功能的代碼實(shí)現(xiàn)
- Android應(yīng)用強(qiáng)制更新APP的示例代碼
- Android應(yīng)用App更新實(shí)例詳解
- Android應(yīng)用更新之自動(dòng)檢測(cè)版本及自動(dòng)升級(jí)
相關(guān)文章
Android Viewpager實(shí)現(xiàn)輪播廣告圖
這篇文章主要為大家詳細(xì)介紹了Android Viewpager實(shí)現(xiàn)輪播廣告圖,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2018-05-05Android編程使用LinearLayout和PullRefreshView實(shí)現(xiàn)上下翻頁(yè)功能的方法
這篇文章主要介紹了Android編程使用LinearLayout和PullRefreshView實(shí)現(xiàn)上下翻頁(yè)功能的方法,涉及Android界面布局與邏輯處理相關(guān)操作技巧,需要的朋友可以參考下2017-08-08Android自定義View實(shí)現(xiàn)波浪動(dòng)畫(huà)
這篇文章主要為大家詳細(xì)介紹了Android自定義View實(shí)現(xiàn)波浪動(dòng)畫(huà),文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2020-08-08Android實(shí)現(xiàn)進(jìn)度條(ProgressBar)的功能與用法
這篇文章主要為大家詳細(xì)介紹了Android實(shí)現(xiàn)進(jìn)度條(ProgressBar)的功能與用法,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2020-08-08Android自定義控件深入學(xué)習(xí) Android生成隨機(jī)驗(yàn)證碼
這篇文章主要再次為大家介紹了Android自定義控件,以及針對(duì)自定義view學(xué)習(xí),實(shí)戰(zhàn)演練了Android生成隨機(jī)驗(yàn)證碼的詳細(xì)過(guò)程,感興趣的小伙伴們可以參考一下2016-01-01Android使用MulticastSocket實(shí)現(xiàn)多點(diǎn)廣播圖片
這篇文章主要為大家詳細(xì)介紹了Android使用MulticastSocket實(shí)現(xiàn)多點(diǎn)廣播圖片,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2019-01-01Android仿ViVO X6 極速閃充動(dòng)畫(huà)效果
這篇文章主要介紹了Android仿ViVO X6 極速閃充動(dòng)畫(huà)效果,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2016-07-07Android使alertDialog.builder不會(huì)點(diǎn)擊外面和按返回鍵消失的方法
本篇文章主要介紹了Android使alertDialog.builder不會(huì)點(diǎn)擊外面和按返回鍵消失的方法,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下。2017-01-01簡(jiǎn)單實(shí)用的Android UI微博動(dòng)態(tài)點(diǎn)贊效果
這篇文章主要為大家詳細(xì)介紹了簡(jiǎn)單實(shí)用的Android UI微博動(dòng)態(tài)點(diǎn)贊效果,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2016-10-10