非常實用的小功能 Android應用版本的更新實例
每一個應用都是具備一個功能,那就是版本更新,我記得我之前在面試的時候,面試官讓我介紹一下應用版本更新的一些具體操作。我當時因為做過這個功能,所以回答的還是很流暢,現(xiàn)在我把這個分享給大家,需要能夠共同進步。
我當時是這么說的:
首先呢,我們是應該在用戶登錄后,在首頁執(zhí)行檢查版本信息的操作,具體是,獲取到本地的版本號后,提交給服務器進行判斷,然后后臺來告訴我們當前版本是否為最新版本,緊接著我們拿到下載地址,執(zhí)行下載的操作,具體的可以使用輸入輸出流來對文件進行存儲和讀取,為了方便下載,我們還可以使用一個第三方框架:xutils,有這個框架,可以更好的實現(xiàn)斷點續(xù)傳等等一下功能,最后我們將下載好的文件,調(diào)用系統(tǒng)的安裝界面,進行安裝,自此我們的更新操作全部完成,當然,有一個很重要的地方,那就是別忘了添加權(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"/>
一般情況下,這么回答就差不多可以達到效果了。
下面我們看看具體的代碼實現(xiàn),我這里以“大眾點評”的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) {
//獲取到安裝包后,調(diào)用系統(tǒng)的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();
}
});
}
}
這里的注釋也是相當?shù)那逦?,我就不在贅述,但是有一個要注意的地方,我這里是用到了xutils的框架,所以沒有這個框架是使用不了的。
最后我附上源代碼,以上就是本文的全部內(nèi)容,希望對大家的學習有所幫助,也希望大家多多支持腳本之家。
相關文章
在Android中創(chuàng)建和使用自定義property的步驟
在Android中創(chuàng)建自定義的屬性(Android property)通常用于調(diào)試、性能調(diào)優(yōu)或傳遞應用和系統(tǒng)之間的信息,本文給大家介紹了如何在Android中創(chuàng)建和使用自定義property的步驟,需要的朋友可以參考下2024-11-11
Android音視頻開發(fā)之MediaExtactor使用教程
MediaExtactor在Android音視頻開發(fā)中負責提取音視頻信息和數(shù)據(jù)流的功能,可以通過該類實現(xiàn)從多媒體文件中剝離得到音頻和視頻的能力。本文將詳細為大家介紹一下它的使用,感興趣的可以了解一下2022-04-04
Android自定義view利用Xfermode實現(xiàn)動態(tài)文字加載動畫
這篇文章主要介紹了Android自定義view利用Xfermode實現(xiàn)動態(tài)文字加載動畫,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下2017-07-07
解決NDK開發(fā)中Eclipse報錯Unresolved inclusion jni.h的最終解決方法(已測)
這篇文章主要介紹了解決NDK開發(fā)中Eclipse報錯Unresolved inclusion jni.h的最終方法,需要的朋友可以參考下2016-12-12
Android檢測Activity或者Service是否運行的方法
下面小編就為大家分享一篇Android檢測Activity或者Service是否運行的方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2018-03-03

