Android-App检测升级库

作者: 酸菜xwdz | 来源:发表于2018-05-10 21:39 被阅读452次

    @酸菜个人站点
    Github
    如博客中有不恰当之处欢迎留言交流

    QuiteVersion

    用于Android App检测自动更新

    实现效果

    WeChatSight112.gif

    添加依赖

        implementation 'com.xwdz:QuiteVersion:0.0.5'
        implementation 'com.xwdz:okHttpUtils:1.0.4'
        //如已依赖可忽略
        implementation 'com.squareup.okhttp3:okhttp:3.5.0'
    

    特点

    • 任何地方都可以调用
    • 支持自定义界面
    • 支持强制下载最新Apk
    • 自调起安装界面
    • 简单
    • 支持OKHttp拦截器
    • 适配7.0

    简单使用

        DialogTest dialogTest = DialogTest.newInstance();
            Quite.getInstance(this)
                    //or POST
                    .GET("http://www.baidu.com")
                    //强制每次更新都从网络下载最新Apk
                    .setForceDownload(true)
                    .setApkPath()
                    .setApkName()
                    .addHeader()
                    .setShowUIActivity()
                    .addParams()
                    .addInterceptor()
                    .addNetworkInterceptor()
                    //UI容器需实现OnUINotify接口
                    .setNotifyHandler(dialogTest)
                    .setOnNetworkParserListener(new OnNetworkParserListener() {
                        @Override
                        public ApkSource parser(String response) {
                            return new ApkSource(
                                    kugou,
                                    "更新内容如下\n1.你好\n2.我不好",
                                    123123123,
                                    123,
                                    9999
                            );
                        }
                    })
                    .apply();
    
    //界面销毁时注意释放资源
    Quite.getInstance(this).recycle()
    

    注意

    开发者必须实现此接口,返回QuiteVersion需要的Apk信息,如果返回null,则视为没有新版本更新

    setOnNetworkParserListener(new OnNetworkParserListener() {
                              @Override
                              public ApkSource parser(String response) {
                                  return null;
                              }
                          })
    

    QuiteVersion 执行更新App策略

     - ApkSource.remoteVersionCode > 当前版本code
     - todo
    

    setApkName 以及setApkPath 说明

    • QuiteVersion 默认实现路径context.getExternalFilesDir("apk").getAbsolutePath() + File.separator + apkFilename

    • QuiteVersion 默认实现文件名称为Url最后一个/ 至 .apk,如酷狗 http://download.kugou.com/download/kugou_androidApkName为kugou_android.apk`

    自定义容器Dialog

    1. 继承AbstractActivity实现自己的UI,重写如下三个方法,通过setShowUIActivity(xxx.class)注入.
    //自己定义的UI layout
    public abstract int getContentLayoutId();
    //数据初始化
    public abstract void setUpData();
    //当执行下载任务的时候回回调到此方法
    public abstract void updateProgress(int percent, long currentLength, long total);
    

    默认的ProgressDialogActivity也是基于此实现。
    可通过String note = getIntent().getStringExtra("note")拿到更新文本。

    1. 实现OnUINotify接口
      在不指定.setNotifyHandler()方法以及setShowUIActivity方法时默认实现效果参照文章开头
      在自定义容器中实现此接口,在接口方法show中调用真正的show方法,详见simple-code

    注意:自定义容器只能使用一种方式。

    自定义容器中,点击开始下载时,需要调用如下代码

    VersionHandler.startDownloadApk(getContext());
    

    自定义容器中注册接受下载进度条组件

    private final VersionHandler.ProgressReceiver mProgressReceiver = new VersionHandler.ProgressReceiver() {
            @Override
            public void onUpdateProgress(long total, long currentLength, int percent) {
                Utils.LOG.i("tag", "current = " + currentLength);
            }
        };
    
    
    //在容器创建等合适的时候调用注册代码
    VersionHandler.registerProgressbarReceiver(getContext(), mProgressReceiver);
    
    //容器销毁的时候调用注销代码
    VersionHandler.unregisterProgressbarReceiver(getContext(), mProgressReceiver);
    

    适配7.0

    在AndroidManifest.xml添加如下代码

    <provider
                android:name="android.support.v4.content.FileProvider"
                android:authorities="您的包名.fileProvider"
                android:exported="false"
                android:grantUriPermissions="true">
                <meta-data
                    android:name="android.support.FILE_PROVIDER_PATHS"
                    android:resource="@xml/file_paths" />
            </provider>
    

    在res文件夹下新建xml文件夹新建文件file_paths.xml添加如下代码

    <?xml version="1.0" encoding="utf-8"?>
    <paths>
        <external-path path="Android/data/您的包名/" name="files_root" />
        <external-path path="." name="external_storage_root" />
    </paths>
    

    相关文章

      网友评论

      • efbd2c84861a:已经收藏
        酸菜xwdz:@Tom123 如果你觉得这个lib对你有用,随手给个Star,让我知道它是对你有帮助的,我会继续更新和维护它
      • 逻辑混乱:能适配8.0吗
        酸菜xwdz:目前没在8.0机器上面跑过

      本文标题:Android-App检测升级库

      本文链接:https://www.haomeiwen.com/subject/kontdftx.html