132 lines
4.4 KiB
Java
132 lines
4.4 KiB
Java
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("安装包下载");//设置标题
|
||
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;
|
||
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);
|
||
}
|
||
}
|