Android(2)—Mono For Android App版本自动更新

浏览:
字体:
发布时间:2013-12-20 16:18:51
来源:
 0.前言
 
  公司Android查询的项目已经开始,整体采用Java后台+App前台来实现,由于项目小,App这块就我一个人开发,首先需要研究的是:Android版本的更新升级问题;本人经过近一周的学习整理,
 
终于有了个Demo,开发环境:VS2012+Mono4.8.00013破解版  测试手机:三星I9220 Note1
 
 
 
  1.已实现的功能和逻辑
 
  1)采用后台服务的方式进行下载
 
  2)下载过程中通知栏显示,并显示下载进度
 
  3)下载界面采用异步方式更新进度条
 
  4)下载完成后点击进行安装-启动新版本
 
 
 
  2.已知BUG和待完善的地方
 
  1)BUG-从通知栏进入更新界面后,然后按返回键-接着再从通知栏进入更新界面,更新界面的数据就完全被初始化了
 
  2)待完善-更新过程中切换通知栏和界面间有点卡
 
  3)待完善-下载完成后点击通知栏,通知栏的信息未消失
 
  4)待完善-安装完成后未删除下载的程序
 
  5)待完善-下载过程中需要在通知栏一直显示,类似于微信未读信息的显示
 
  6)待完善-未添加下载过程中暂停的操作
 
  7)待完善-网络异常及超时未处理
 
 
 
  3.程序实现(1)- 更新逻辑
 
  谷歌建议我们使用VersionCode自增来表明版本升级,无论是大的改动还是小的改动,而VersionName是显示给用户的软件版本。所以我们选择VersionCode作为我们定义版本升级的参数。
 
  而定义VersionCode是在AndroidManifest.xml文件中manifest节点中增加android:versionCode="1" android:versionName="1.0",然后与服务器端版本进行比较,实现如下:
 
      
 
 
  
 
  4.程序实现(2)- 创建服务
 
  为了在更新的过程中用户能够同时操作App,我们需要将下载的过程用服务来实现,服务中需要做的就是通知栏显示、下载更新和刷新下载进度全局变量,以便下载界面获取;
 
                  
 
 
 
  5.程序实现(3)- 异步刷新进度条
 
  为了友好地用户操作,下载过程中需要刷新界面中的进度条和文本信息,以告诉用户下载未停止,这里采用的是异步的方式,异步DoInBackground方法中需要执行PublishProgress函数
 
OnProgressUpdate方法才会起作用,可以理解为后台推送进度的更改,这样才会触发OnProgressUpdate事件;
 
    
 
 
  6.程序实现(4)- 下载完成后进行安装
 
  下载完成后需要让用户安装程序,安装的代码如下,我之所以单独帖出来,是因为这个地方卡了很久,之前就少了一句,希望对大家有所帮助:
 
1  public static void InstallNewApk(Context m_Context)
2 {
3     Intent ite = new Intent(Intent.ActionView);
4     string filePath = m_Context.Resources.GetString(Resource.String.FilePath);
5     var uriPath = Android.Net.Uri.Parse(@"file://" + filePath);
6      ite.SetDataAndType(uriPath, @"application/vnd.android.package-archive");
7      ite.SetFlags(ActivityFlags.NewTask);//这句很关键,没有这句安装完成后不会弹出“完成”和“打开”的对话框;
8      m_Context.StartActivity(ite);
9 }
 
   
>更多相关文章
24小时热门资讯
24小时回复排行
资讯 | QQ | 安全 | 编程 | 数据库 | 系统 | 网络 | 考试 | 站长 | 关于东联 | 安全雇佣 | 搞笑视频大全 | 微信学院 | 视频课程 |
关于我们 | 联系我们 | 广告服务 | 免责申明 | 作品发布 | 网站地图 | 官方微博 | 技术培训
Copyright © 2007 - 2023 Vm888.Com. All Rights Reserved
粤公网安备 44060402001498号 粤ICP备19097316号 请遵循相关法律法规
');})();