非常实用的小功能 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的框架,所以没有这个框架是使用不了的。
最后我附上源代码,以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。
相关文章
Android音视频开发之MediaExtactor使用教程
MediaExtactor在Android音视频开发中负责提取音视频信息和数据流的功能,可以通过该类实现从多媒体文件中剥离得到音频和视频的能力。本文将详细为大家介绍一下它的使用,感兴趣的可以了解一下2022-04-04
Android自定义view利用Xfermode实现动态文字加载动画
这篇文章主要介绍了Android自定义view利用Xfermode实现动态文字加载动画,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下2017-07-07
解决NDK开发中Eclipse报错Unresolved inclusion jni.h的最终解决方法(已测)
这篇文章主要介绍了解决NDK开发中Eclipse报错Unresolved inclusion jni.h的最终方法,需要的朋友可以参考下2016-12-12
Android检测Activity或者Service是否运行的方法
下面小编就为大家分享一篇Android检测Activity或者Service是否运行的方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧2018-03-03


最新评论