zoukankan      html  css  js  c++  java
  • Android(2)—Mono For Android App版本自动更新

      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 }

       

      7.测试方法  

      本地安装1.0版本,然后将2.0的版本放到服务端,配置String.xml里的DownLoadUrl参数,这样就可以进行测试了,该程序只在内网WLAN下测试完成,其他测试需要继续进行;

      8.共同进步

      源码的下载地址为:http://pan.baidu.com/s/1tfHpW 我希望有需要的同学可以下载并完善这个Demo,我之后会把更新的这些信息放在本博文的后面,希望各位大牛不吝惜自己的知识,共同学习;

    代码中有不恰当地方希望各位同学热情指出;

      9.小结&致谢

      在研究该功能时,参考的资料大多是Java的,转换过程有点累人,个别资料都还是比较有参考价值的,感谢这些作者,特别感谢网友【绿豆荚】、【/aiq十三楼丶楼主】的不吝指教。

      10.BUG修改&细节完善 (期待各位同学的解答)

      

        

      

  • 相关阅读:
    POJ 1182 食物链(带权并查集)
    UVa 10655 n次方之和(矩阵快速幂)
    2016湘潭邀请赛—Heartstone
    2016湘潭邀请赛—Gambling
    UVa 10375 选择与除法(唯一分解定理)
    UVa 1637 纸牌游戏(全概率公式)
    POJ 2443 Set Operation(压位加速)
    UVa 11248 网络扩容(最大流(需要优化))
    51Nod 1737 配对(树的重心)
    51Nod 1070 Bash游戏 V4(斐波那契博弈)
  • 原文地址:https://www.cnblogs.com/Hua-Min/p/Android_AppUpgrate.html
Copyright © 2011-2022 走看看