Android实用功能分享——应用版本的更新实例
2017-03-25 10:44
603 查看
每一个应用都是具备一个功能,那就是版本更新,我记得我之前在面试的时候,面试官让我介绍一下应用版本更新的一些具体操作。我当时因为做过这个功能,所以回答的还是很流畅,现在我把这个分享给大家,需要能够共同进步。
我当时是这么说的:
首先呢,我们是应该在用户登录后,在首页执行检查版本信息的操作,具体是,获取到本地的版本号后,提交给服务器进行判断,然后后台来告诉我们当前版本是否为最新版本,紧接着我们拿到下载地址,执行下载的操作,具体的可以使用输入输出流来对文件进行存储和读取,为了方便下载,我们还可以使用一个第三方框架:xutils,有这个框架,可以更好的实现断点续传等等一下功能,最后我们将下载好的文件,调用系统的安装界面,进行安装,自此我们的更新操作全部完成,当然,有一个很重要的地方,那就是别忘了添加权限:
2
3
1
2
3
一般情况下,这么回答就差不多可以达到效果了。
下面我们看看具体的代码实现,我这里以“大众点评”的APP下载为案例
看看activity的操作:
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
这里的注释也是相当的清晰,我就不在赘述,但是有一个要注意的地方,我这里是用到了xutils的框架,所以没有这个框架是使用不了的。最后我附上源代码
我当时是这么说的:
首先呢,我们是应该在用户登录后,在首页执行检查版本信息的操作,具体是,获取到本地的版本号后,提交给服务器进行判断,然后后台来告诉我们当前版本是否为最新版本,紧接着我们拿到下载地址,执行下载的操作,具体的可以使用输入输出流来对文件进行存储和读取,为了方便下载,我们还可以使用一个第三方框架: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"/>1
2
3
1
2
3
一般情况下,这么回答就差不多可以达到效果了。
下面我们看看具体的代码实现,我这里以“大众点评”的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(); } }); } }1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
这里的注释也是相当的清晰,我就不在赘述,但是有一个要注意的地方,我这里是用到了xutils的框架,所以没有这个框架是使用不了的。最后我附上源代码
相关文章推荐
- Android实用功能分享——应用版本的更新实例
- Android实用功能分享——应用版本的更新实例
- 非常实用的小功能 Android应用版本的更新实例
- android应用版本更新功能---完整版
- Android开发中应用版本更新功能
- AIR Native Extension:在Android的Flex应用中调用Android Intent实现分享功能
- Android应用自动更新功能的代码实现
- Android应用自动更新功能的实现
- Android应用自动更新功能的代码实现
- Android app“版本更新”功能的前后端实现
- Android应用自动更新功能的代码实现
- Android应用自动更新功能的实现!!!
- (android实战)应用在线版本更新
- Android防止内存溢出浅析/应用自动更新功能的代码实现
- Android应用自动更新功能的代码实现
- Android应用自动更新功能的代码实现
- Android应用自动更新功能的实现!!!
- Android应用自动更新功能的实现!!!
- Android应用自动更新功能的实现!!!
- Android应用自动更新功能的实现!!!