Android高版本无法自动安装APK的问题

app级的build.gradle导入:

implementation'cn.bingoogolapple:bga-progressbar:1.0.0@aar'

implementation"com.android.support:cardview-v7:27.1.1"

implementation'cn.bingoogolapple:bga-update:1.0.2@aar'

Activity中:

private DownloadingDialogmDownloadingDialog;

@Override

protected void onCreate(Bundle savedInstanceState) {

    super.onCreate(savedInstanceState);

    setContentView(R.layout.activity_splash);

    BGAUpgradeUtil.getDownloadProgressEventObservable().subscribe(downloadProgressEvent -> {

        if (mDownloadingDialog !=null &&mDownloadingDialog.isShowing() && downloadProgressEvent.isNotDownloadFinished()) {

                    mDownloadingDialog.setProgress(downloadProgressEvent.getProgress(), downloadProgressEvent.getTotal());

         }

    });

}

/**

* 下载新版 apk 文件

*/

public void downloadApkFile(String mApkUrl,String mNewVersion) {

    // 如果新版 apk 文件已经下载过了,直接 return,此时不需要开发者调用安装 apk 文件的方法,在 isApkFileDownloaded 里已经调用了安装」

    if (BGAUpgradeUtil.isApkFileDownloaded(mNewVersion)) {

                return;

    }

    // 下载新版 apk 文件

    BGAUpgradeUtil.downloadApkFile(mApkUrl, mNewVersion).subscribe(new Subscriber() {

                @Override

                public void onStart() {

                    showDownloadingDialog();

                }

                @Override

                public void onCompleted() {

                    dismissDownloadingDialog();

                }

                    @Override

                public void onError(Throwable e) {

                        dismissDownloadingDialog();

                        ToastUtils.showShort(SplashActivity.this,"网络异常,请稍后重试");

                }

                @Override

                public void onNext(File apkFile) {

                    if (apkFile !=null) {

                           BGAUpgradeUtil.installApk(apkFile);

                     }

                 }

            });

}

/**

* 显示下载对话框

*/

private void showDownloadingDialog() {

    if (mDownloadingDialog ==null) {

        mDownloadingDialog =new DownloadingDialog(this);

    }

        mDownloadingDialog.show();

}

/**

* 隐藏下载对话框

*/

private void dismissDownloadingDialog() {

    if (mDownloadingDialog !=null) {

        mDownloadingDialog.dismiss();

    }

}

最后在是否更新弹框的确定按钮点击事件下:

downloadApkFile(versionBean.getData().getUrl(),versionBean.getData().getVersion());

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 134,997评论 19 139
  • ¥开启¥ 【iAPP实现进入界面执行逐一显】 〖2017-08-25 15:22:14〗 《//首先开一个线程,因...
    小菜c阅读 6,554评论 0 17
  • 1. Java基础部分 基础部分的顺序:基本语法,类相关的语法,内部类的语法,继承相关的语法,异常的语法,线程的语...
    子非鱼_t_阅读 31,779评论 18 399
  • 上篇文章介绍了IPC机制的基本概念以及简单使用,文章链接:Android 关于IPC机制的理解(一) 这篇文章主要...
    老实任阅读 766评论 0 2
  • 1. 我和鸿晟是朋友聚会上认识的。鸿晟是个能让大部分家长都极为满意的女婿。“长得温文儒雅,家庭又好,更重要他自己人...
    柠檬屋里的小崽猫阅读 1,162评论 0 2