| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126 |
- package com.android.chmo.ui.dialog;
- import android.app.AlertDialog;
- import android.app.Dialog;
- import android.app.ProgressDialog;
- import android.content.Context;
- import android.os.Bundle;
- import android.support.annotation.NonNull;
- import android.util.Log;
- import android.util.TypedValue;
- import android.view.Gravity;
- import android.view.Window;
- import android.view.WindowManager;
- import android.widget.TextView;
- import com.android.chmo.R;
- import com.android.chmo.ui.activity.MainActivity;
- import com.blankj.utilcode.util.AppUtils;
- import com.liulishuo.filedownloader.BaseDownloadTask;
- import com.liulishuo.filedownloader.FileDownloadListener;
- import com.liulishuo.filedownloader.FileDownloader;
- import java.io.File;
- import butterknife.BindView;
- import butterknife.ButterKnife;
- import butterknife.OnClick;
- public class UpdateDialog extends Dialog {
- private String version, desc, url;
- @BindView(R.id.tv_version)
- TextView tvVersion;
- @BindView(R.id.tv_desc)
- TextView tvDesc;
- private UpdateDialog(@NonNull Context context, String version, String desc, String url) {
- super(context, R.style.DialogStyle);
- this.version = version;
- this.desc = desc;
- this.url = url;
- }
- public static void Present(Context context, String version, String desc, String url) {
- UpdateDialog updateDialo = new UpdateDialog(context, version, desc, url);
- updateDialo.show();
- }
- @Override
- protected void onCreate(Bundle savedInstanceState) {
- super.onCreate(savedInstanceState);
- setContentView(R.layout.dialog_update);
- ButterKnife.bind(this);
- Window window = getWindow();
- WindowManager.LayoutParams wlp = window.getAttributes();
- wlp.gravity = Gravity.CENTER;
- window.setAttributes(wlp);
- window.setWindowAnimations(R.style.DialogAnimation);
- int width = (int) TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, 280, getContext().getResources().getDisplayMetrics());
- window.setLayout(width, WindowManager.LayoutParams.WRAP_CONTENT);
- setCancelable(false);
- tvVersion.setText(version);
- tvDesc.setText(desc);
- }
- @OnClick(R.id.btn_update)
- void update() {
- final File file = new File(getContext().getExternalCacheDir(), "update" + System.currentTimeMillis() + ".apk");
- final ProgressDialog progressDialog = new ProgressDialog(getContext(), AlertDialog.THEME_DEVICE_DEFAULT_LIGHT);
- progressDialog.setProgressStyle(ProgressDialog.STYLE_HORIZONTAL);
- progressDialog.setTitle("正在下载");
- progressDialog.setProgress(0);
- progressDialog.setCancelable(false);
- progressDialog.show();
- FileDownloader.getImpl().create(url)
- .setPath(file.getPath())
- .setListener(new FileDownloadListener() {
- @Override
- protected void pending(BaseDownloadTask task, int soFarBytes, int totalBytes) {
- }
- @Override
- protected void connected(BaseDownloadTask task, String etag, boolean isContinue, int soFarBytes, int totalBytes) {
- progressDialog.show();
- }
- @Override
- protected void progress(BaseDownloadTask task, int soFarBytes, int totalBytes) {
- progressDialog.setProgress((int) (soFarBytes * 100L / totalBytes));
- }
- @Override
- protected void blockComplete(BaseDownloadTask task) {
- }
- @Override
- protected void retry(final BaseDownloadTask task, final Throwable ex, final int retryingTimes, final int soFarBytes) {
- }
- @Override
- protected void completed(BaseDownloadTask task) {
- AppUtils.installApp(file, "com.android.chmo.fileProvider");
- progressDialog.dismiss();
- }
- @Override
- protected void paused(BaseDownloadTask task, int soFarBytes, int totalBytes) {
- }
- @Override
- protected void error(BaseDownloadTask task, Throwable e) {
- progressDialog.dismiss();
- new AlertDialog.Builder(getContext(), AlertDialog.THEME_DEVICE_DEFAULT_LIGHT)
- .setPositiveButton("重试", (dialog, which) -> update())
- .setTitle("下载失败")
- .setCancelable(false)
- .show();
- }
- @Override
- protected void warn(BaseDownloadTask task) {
- }
- }).start();
- }
- }
|