ApkUpdateTool

Android 升级模块
授权协议 GPL
开发语言 Java
所属分类 手机/移动开发、 手机开发工具
软件类型 开源软件
地区 国产
投 递 者 耿弘阔
操作系统 Android
开源组织
适用人群 未知
 软件概览

ApkUpdateTool

android 應用版本更新框架,將所有的版本更新業務進行了進一步的封裝,開發人員衹需簡單的接入就可以進行版本更新了 ,支持自定義的dialog提示和自定義 notification

使用方法

如何接入?

gradle 接入方式

    compile 'com.ml.apkupdate:appupdate:1.0.7@aar'
    compile 'com.ml.asynchttp:asynchttp-android:1.0.7'

調用

首先在清單文件中加入服務,以及網絡權限和文件讀寫權限

    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
    <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/> 
    <uses-permission android:name="android.permission.INTERNET"/> 
    <service android:name="com.uyin.apkupdate.service.UpdateVersionService"/>
    ApkUpdateCheck<ResonseEnty ,VersionBean> apkUpdateCheck=new ApkUpdateCheck(url, new AppVersionCheckCallBack<ResonseEnty,VersionBean>() { @Override public String getTitle(VersionBean t) { //這個是在顯示dialog的title部分 return t.getVersionNo();
                    } @Override public String getContent(VersionBean t) { //這個是在顯示dialog的cotent部分 return t.getVersionName();
                    } @Override public String getDownURL(VersionBean t) { String url=UrlEncodeUtils.encodeUrl(t.getVersionUrl()); Log.e("tag","url="+url); return "http://www.jiujiumiandan.cn/jiujiumiandan-user.apk";
                    } @Override public boolean isMustUpdate(VersionBean t) { //表示是否必須更新 版本,如果返回true  dialog消失的話,app也會關閉 return true;
                    } @Override public boolean isShowDialog(ResonseEnty t1) { //這個方法主要是 判斷 是否要需要更新版本,返回的boolean類型是判斷是否要顯示更新版本的dialog的 return true;
                    } @Override public String getResultDesConstants(String result) { String dasd=DesConstants.DecryptDoNet(result, DesConstants.AESKey); Log.e("tag",dasd);
                        dasd= "{\"Status\":1,\"ErrCode\":\"000000\",\"ErrMsg\":null,\"ResultJson\":\"{\\\"VersionId\\\":1,\\\"VersionNo\\\":\\\"2.1.1\\\",\\\"VersionName\\\":\\\"2.1.1\\\",\\\"VersionLog\\\":\\\"久久免单---用我买单,好酒免单\\\\n\\\\n【优化】我要买单的界面布局局部调整。\\\\n\\\\n我们始终致力于改善您的体验,若果您觉得我们这个版本还不错,请在应用商城给我们一个评价,我们感激不尽。\\\\n如果您有什么问题,可以直接在微信公众号:久久免单 或 APP个人中心--反馈中直接留言,我们将及时反馈您的问题。\\\",\\\"VersionUrl\\\":\\\"http://www.jiujiumiandan.cn/jiujiumiandan-user.apk\\\",\\\"MustUpdate\\\":false}\"}"; //dasd這裏對應的就是  ResonseEnty  ,其中的ResultJson對應的就是 VersionBean  ,所以如果服務器返回的數據類型衹是ResultJson那在初始化的時候,直接傳入兩個相同的ApkUpdateCheck<VersionBean ,VersionBean> return dasd;
                    } @Override public VersionBean getResultBaen(ResonseEnty t1) { return new Gson().fromJson(t1.getResultJson(),VersionBean.class); //這裏是根據 ResonseEnty的返回值 初始化 VersionBean }
                });
                apkUpdateCheck.setActivity(MainActivity.this);
                apkUpdateCheck.setResultBean(ResonseEnty.class);
                apkUpdateCheck.check();
  • #####注意 :實體類型的字段必須要和網絡請求返回的字段一致,否則會出錯

如何自定義dialog和 notification?

如果要自定義dialog,衹需要繼承ApkUpdateDialog

public class DefaultDialog extends ApkUpdateDialog { public DefaultDialog(Context context) { super(context);
    } @Override public int getLayout() { return R.layout.app_update_custom_dialog;
    } @Override public int getCancleViewId() { return R.id.cancel;
    } @Override public int getConfirmViewId() { return R.id.confirm;
    } @Override public int getTitleViewId() { return R.id.dialog_title;
    } @Override public int getContentViewId() { return R.id.dialog_deatail;
    }
}

和dialog不用的是,notification不但可以繼承ApkUpdateNotification來實現,你也可以通過實現NoticeListener來自己創建更炫的notification

public class DefaultNotification extends ApkUpdateNotification { public DefaultNotification(Application application) { super(application);
    } @Override protected Notification initNotification(Notification downLoadNotification) { return downLoadNotification;
    } @Override public int getLayoutId() { return R.layout.view_notification_updateversion;
    } @Override public void updateRoteView(RemoteViews remoteView, long current, long total) { int progress= (int) (current*100f/total);
        remoteView.setTextViewText(R.id.tv_progress,""+progress+"%");
        remoteView.setProgressBar(R.id.pb_progress,100,progress,false);
    } @Override public int getLogoId() { return R.drawable.ic_launcher;
    } @Override protected void onFinish() {

    }
}

使用自定義的dialog和 Notification

  ApkUpdateCheck<ResonseEnty ,VersionBean> apkUpdateCheck=new ApkUpdateCheck(url, new AppVersionCheckCallBack<ResonseEnty,VersionBean>() {

                },new DefaultDialog(MainActivity.this),new DefaultNotification(MainActivity.this.getApplcation()));
                apkUpdateCheck.setActivity(MainActivity.this);
                apkUpdateCheck.setResultBean(ResonseEnty.class);
                apkUpdateCheck.check();

有问题反馈

在使用中有任何问题,欢迎反馈给我,可以用以下联系方式跟我交流

作者其他开源

  • 软件介绍 ApkUpdateTool android 應用版本更新框架,將所有的版本更新業務進行了進一步的封裝,開發人員衹需簡單的接入就可以進行版本更新了 ,支持自定義的dialog提示和自定義 notification 使用方法 如何接入? gradle 接入方式compile 'com.ml.apkupdate:appupdate:1.0.7@aar' compile 'com.ml.asyn

 相关资料
  • 我有一个大的多模块maven项目(几十个模块,4个嵌套级别)。 每个模块都有自己的语义版本(可以是或不是)。 我想找到一种方法,用一个命令或脚本自动增加每个模块的主要版本,以避免每个模块中的更改。 所以我举个例子 在颠簸之后我想要 我知道Maven Release Plugin和Maven Plugin版本,但我不知道如何让它们自动与主版本碰撞。 你能帮我解决这个问题吗?

  • 主要内容:从LOCAL存储引擎迁移到PLOCAL升级时,必须考虑版本号和格式。 有三种格式 - ,,。 版本需要不兼容的API更改。 版本需要向后兼容的功能。 版本需要向后兼容的错误修复。 要在小版本和主版本之间同步,可能需要导出和导入数据库。 有时需要将数据库从迁移到,并且需要将图形迁移到RidBag。 从LOCAL存储引擎迁移到PLOCAL 从版本开始OrientDB附带一个全新的存储引擎:PLOCAL(分页本地)。 它像LOCAL一样持久

  • 讨论 Chromium 和 Node.js 都依赖于 V8 , Electron 只包含 了 V8 的一个副本,所以务必确保选择的 V8 版本与构建版本的 Node.js 和 Chromium 相兼容。 升级 Node 比升级 Chromium 容易得多,因此如果首先升级Chromium,然后升级 Node 版本至最接近 Chromiun 所包含的 V8 版本,出现的冲突可能会小一些。 Elect

  • 本文概述了在Electron中升级Chromium所需的步骤。 将libcc升级到新的Chromium版本 使Electron兼容新的libcc 如有必要,请更新Electron的相关依赖(如崩溃报告,NodeJS等) 创建libcc和Electron的内部编译本 如有需要,请更新Electron文档 Upgrading Chromium This is an overview of the st

  • 花点功夫去改善HTTP协议显然是极好的事情。我们可以着手于以下几个方面: 降低协议对延迟的敏感 修复pipelining和head of line blocking的问题 防止主机需求更高的连接数量 保留所有现有的接口,内容,URI格式和结构 由IETF的HTTPbis工作组来制定 4.1. IETF和HTTPbis工作组 The Internet Engineering Task Force (

  • 我们在kubernetes1.6的时候同时安装了dashboard插件,该插件也是基于kubernetes1.6版本开发的。如今kubernetes1.8版本业已发布,如何升级dashboard以获取新版中功能呢? Dashboard的升级比较简单,因为它仅仅是一个前端应用,用来展现集群信息和与后端API交互,理论上只需要更新原先dashboard的yaml配置文件中的镜像就可以了,但是为了使用d

  • Ceph 的各个版本都可能有特定的步骤,升级前请参考与此版本相关的章节和发布说明文档,以确定有哪些特定于此版本的步骤。 概述 你可以在 Ceph 集群在线且提供服务时升级守护进程!某些类型的守护进程依赖其他的,如 Ceph 元数据服务器和 Ceph 对象网关依赖于 Ceph 监视器和 OSD 守护进程,所以我们建议按以下顺序升级: ceph-deploy 工具 Ceph 监视器 Ceph OSD

  • IMPORTANT: 在升级 Kibana 之前: 请参考重要变更文档。 在升级生产服务之前请先在测试环境测试升级。 使用 Elasticsearch 的 snapshots 特性备份数据。除非存在备份数据,否则版本 不能向前回滚 。 如果使用了自定义插件,检查其是否有兼容版本。 从不同的 Kibana 版本进行升级,过程也不相同。请参考以下表格决定需要按照哪个过程进行升级: 当前版本 目标版本