2025-08-26 19:34:44 +08:00
|
|
|
|
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.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.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.logger.Logger;
|
|
|
|
|
|
import com.xscm.moduleutil.widget.dialog.BaseDialog;
|
|
|
|
|
|
|
|
|
|
|
|
public class AppUpdateDialog extends BaseDialog<DialogAppUpdateBinding> 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("安装包下载");//设置标题
|
2025-09-05 00:46:27 +08:00
|
|
|
|
mProgressDialog.setIcon(R.mipmap.ic_launcher_app);//设置标题小图标
|
2025-08-26 19:34:44 +08:00
|
|
|
|
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;
|
|
|
|
|
|
mBinding.tvContent.setText(TextUtils.isEmpty(appUpdateModel.getContent()) ? "修复旧版本已知bug" : Html.fromHtml(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);
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|