package com.xscm.moduleutil.adapter; import android.app.ProgressDialog; import android.content.Context; import android.content.Intent; import android.net.Uri; import androidx.annotation.NonNull; import android.text.Html; import android.text.TextUtils; import android.text.method.ScrollingMovementMethod; import android.util.Log; import android.view.KeyEvent; import android.view.View; import android.view.Window; import android.view.WindowManager; import com.blankj.utilcode.util.AppUtils; import com.blankj.utilcode.util.LogUtils; import com.blankj.utilcode.util.ScreenUtils; import com.blankj.utilcode.util.ToastUtils; import com.xscm.moduleutil.R; import com.xscm.moduleutil.bean.AppUpdateModel; import com.xscm.moduleutil.databinding.DialogAppUpdateBinding; import com.xscm.moduleutil.utils.DownloadListener; import com.xscm.moduleutil.utils.DownloadUtil; import com.xscm.moduleutil.utils.TextViewUtils; import com.xscm.moduleutil.utils.logger.Logger; import com.xscm.moduleutil.widget.dialog.BaseDialog; public class AppUpdateDialog extends BaseDialog implements DownloadListener, View.OnClickListener { private AppUpdateModel appUpdateModel; private ProgressDialog mProgressDialog; public AppUpdateDialog(@NonNull Context context) { super(context); } @Override public int getLayoutId() { return R.layout.dialog_app_update; } @Override public void initView() { Window window = getWindow(); window.setBackgroundDrawableResource(android.R.color.transparent); window.setLayout((int) (ScreenUtils.getScreenWidth() * 305 / 375), WindowManager.LayoutParams.WRAP_CONTENT); mBinding.tvContent.setMovementMethod(new ScrollingMovementMethod()); mBinding.btUpdate.setOnClickListener(this::onClick); } @Override public void initData() { } @Override public void onClick(View view) { if (appUpdateModel != null) { mProgressDialog = new ProgressDialog(getContext()) { @Override public void onBackPressed() { } }; mProgressDialog.setMax(100);//设置最大值 mProgressDialog.setTitle("安装包下载");//设置标题 mProgressDialog.setIcon(R.mipmap.ic_launcher_app);//设置标题小图标 mProgressDialog.setProgressStyle(ProgressDialog.STYLE_HORIZONTAL);//设置样式为横向显示进度的样式 mProgressDialog.incrementProgressBy(0);//设置初始值为0,其实可以不用设置,默认就是0 mProgressDialog.setIndeterminate(false);//是否精确显示对话框,flase为是,反之为否 mProgressDialog.setCanceledOnTouchOutside(false); mProgressDialog.setMessage("下载中请稍等!!!"); mProgressDialog.show(); DownloadUtil downloadUtil = new DownloadUtil(getContext()); downloadUtil.downloadFile(appUpdateModel.getUrl(), this); } } public void setAppUpdateModel(AppUpdateModel appUpdateModel) { this.appUpdateModel = appUpdateModel; TextViewUtils.setHtmlText(mBinding.tvContent,appUpdateModel.getContent(),false); //mBinding.tvContent.setText(TextUtils.isEmpty(appUpdateModel.getContent()) ? "修复旧版本已知bug" : Html.fromHtml(appUpdateModel.getContent())); LogUtils.d("AppUpdateDialog", "setAppUpdateModel " + appUpdateModel.getContent().toString()); // mBinding.tvContent.setHtmlText(appUpdateModel.getContent()); } @Override public boolean onKeyDown(int keyCode, @NonNull KeyEvent event) { if (keyCode == KeyEvent.KEYCODE_BACK && event.getRepeatCount() == 0) { return true; } if (keyCode == KeyEvent.KEYCODE_SEARCH) { return true; } return super.onKeyDown(keyCode, event); } @Override public void onStart() { } @Override public void onProgress(int currentLength) { if (mProgressDialog != null) { mProgressDialog.setProgress(currentLength); } } @Override public void onFinish(String localPath) { if (mProgressDialog != null && mProgressDialog.isShowing()) { mProgressDialog.dismiss(); } try { AppUtils.installApp(localPath); } catch (Exception e) { Logger.e("installAppError", e); onFailure(); } dismiss(); } @Override public void onFailure() { ToastUtils.showShort("下载失败前往浏览器手动更新"); Intent intent = new Intent(); intent.setAction(Intent.ACTION_VIEW); Uri url = Uri.parse(appUpdateModel.getUrl()); intent.setData(url); getContext().startActivity(intent); } }