Files
MAG160C/analysis/jadx_magcx/cn/com/magnity/magnitycx/upgrade/CheckVersionTask.java
T

316 lines
15 KiB
Java

package cn.com.magnity.magnitycx.upgrade;
import android.app.Activity;
import android.app.AlertDialog;
import android.app.ProgressDialog;
import android.content.Context;
import android.content.DialogInterface;
import android.content.Intent;
import android.content.pm.PackageInfo;
import android.content.pm.PackageManager;
import android.content.res.Configuration;
import android.net.Uri;
import android.os.Build;
import android.os.Bundle;
import android.os.Environment;
import android.os.Handler;
import android.os.Message;
import android.support.v4.content.FileProvider;
import cn.com.magnity.magnitycx.MagApplication;
import cn.com.magnity.magnitycx.MainActivity;
import cn.com.magnity.magnitycx.R;
import cn.com.magnity.magnitycx.log.Logging;
import java.io.File;
import java.util.Locale;
import org.apache.log4j.Priority;
import org.json.JSONArray;
import org.json.JSONObject;
/* loaded from: classes.dex */
public class CheckVersionTask implements Runnable {
private static final int CHECK_ERROR = -1;
private static final int CHECK_OK = 0;
private static final String UPGRADEINFO_DESC = "description";
private static final String UPGRADEINFO_FORCE = "forceUpgrade";
private static final String UPGRADEINFO_URL = "url";
private static final String UPGRADEINFO_VERSIONCODE = "versionCode";
private static final String UPGRADEINFO_VERSIONNAME = "versionName";
public static final int UPGRADE_BEGIN = 1;
private static final int UPGRADE_ERROR = -2;
public static final int UPGRADE_FINISHED = 3;
public static final int UPGRADE_RECEIVED_SIZE = 2;
private Context ctx_;
private boolean isForceUpgrade_;
private int localVersion_;
Handler handler_ = new Handler() { // from class: cn.com.magnity.magnitycx.upgrade.CheckVersionTask.1
@Override // android.os.Handler
public void handleMessage(Message msg) {
super.handleMessage(msg);
switch (msg.what) {
case -2:
if (CheckVersionTask.this.progressDialog_ != null) {
CheckVersionTask.this.progressDialog_.dismiss();
CheckVersionTask.this.progressDialog_ = null;
}
AlertDialog.Builder builder = new AlertDialog.Builder(CheckVersionTask.this.ctx_);
builder.setTitle(R.string.upgradeError);
builder.setPositiveButton(R.string.labelOK, new DialogInterface.OnClickListener() { // from class: cn.com.magnity.magnitycx.upgrade.CheckVersionTask.1.1
@Override // android.content.DialogInterface.OnClickListener
public void onClick(DialogInterface dialog, int which) {
CheckVersionTask.this.unlockScreen();
}
});
AlertDialog dialog = builder.create();
dialog.setCanceledOnTouchOutside(false);
dialog.show();
break;
case -1:
CheckVersionTask.this.unlockScreen();
break;
case 0:
CheckVersionTask.this.lockScreen();
Bundle bundle = msg.getData();
CheckVersionTask.this.isForceUpgrade_ = bundle.getBoolean(CheckVersionTask.UPGRADEINFO_FORCE);
CheckVersionTask.this.showUpgradeDialog(bundle.getString(CheckVersionTask.UPGRADEINFO_DESC), bundle.getString(CheckVersionTask.UPGRADEINFO_URL), bundle.getString(CheckVersionTask.UPGRADEINFO_VERSIONNAME), bundle.getInt(CheckVersionTask.UPGRADEINFO_VERSIONCODE), CheckVersionTask.this.isForceUpgrade_);
break;
case 1:
CheckVersionTask.this.progressDialog_ = new ProgressDialog(CheckVersionTask.this.ctx_);
CheckVersionTask.this.progressDialog_.setOnCancelListener(new DialogInterface.OnCancelListener() { // from class: cn.com.magnity.magnitycx.upgrade.CheckVersionTask.1.2
@Override // android.content.DialogInterface.OnCancelListener
public void onCancel(DialogInterface dialog2) {
CheckVersionTask.this.stopDownloadApk();
CheckVersionTask.this.unlockScreen();
if (CheckVersionTask.this.isForceUpgrade_ && (CheckVersionTask.this.ctx_ instanceof MainActivity)) {
((MainActivity) CheckVersionTask.this.ctx_).onBackPressed();
}
}
});
CheckVersionTask.this.progressDialog_.setProgressStyle(1);
CheckVersionTask.this.progressDialog_.setMessage(CheckVersionTask.this.ctx_.getResources().getString(R.string.upgrading));
CheckVersionTask.this.progressDialog_.setProgressNumberFormat("%1d KB/%2d KB");
CheckVersionTask.this.progressDialog_.setProgress(0);
CheckVersionTask.this.progressDialog_.setMax(msg.arg1 / 1000);
CheckVersionTask.this.progressDialog_.setCanceledOnTouchOutside(false);
CheckVersionTask.this.progressDialog_.show();
break;
case 2:
if (CheckVersionTask.this.progressDialog_ != null) {
CheckVersionTask.this.progressDialog_.setProgress(msg.arg1 / 1000);
break;
}
break;
case 3:
if (CheckVersionTask.this.progressDialog_ != null) {
CheckVersionTask.this.progressDialog_.dismiss();
CheckVersionTask.this.progressDialog_ = null;
}
CheckVersionTask.this.unlockScreen();
if (msg.obj != null && (msg.obj instanceof File)) {
CheckVersionTask.this.installApk((File) msg.obj);
break;
}
break;
}
}
};
private ProgressDialog progressDialog_ = null;
private Thread threadUpgrading_ = null;
public CheckVersionTask(Context ctx, int localVersion) {
this.ctx_ = ctx;
this.localVersion_ = localVersion;
}
public void stopDownload() {
stopDownloadApk();
}
public UpgradeInfo parseVersionInfo(String str) throws Exception {
UpgradeInfo info = null;
JSONObject object = new JSONObject(str);
if (object != null && object.length() >= 1) {
String productType = this.ctx_.getString(R.string.upgradeID);
if (object.has(productType)) {
JSONArray array = object.getJSONArray(productType);
if (array.length() > 0) {
JSONObject obj = array.getJSONObject(array.length() - 1);
info = new UpgradeInfo();
if (obj.has("verName")) {
info.setVersionName(obj.getString("verName"));
}
if (obj.has("verCode")) {
info.setVersionCode(obj.getInt("verCode"));
}
if (obj.has("apkUrl")) {
info.setApkUrl(obj.getString("apkUrl"));
}
try {
Configuration config = this.ctx_.getResources().getConfiguration();
if (!config.locale.getLanguage().equals(Locale.CHINA.getLanguage()) || !config.locale.getCountry().equals(Locale.CHINA.getCountry())) {
if (obj.has("description-en")) {
info.setDescription(obj.getString("description-en"));
}
} else if (obj.has(UPGRADEINFO_DESC)) {
info.setDescription(obj.getString(UPGRADEINFO_DESC));
}
} catch (Exception e) {
}
if (obj.has(UPGRADEINFO_FORCE)) {
info.setForceUpgrade(obj.getBoolean(UPGRADEINFO_FORCE));
}
}
}
}
return info;
}
/* JADX INFO: Access modifiers changed from: private */
public void lockScreen() {
if (this.ctx_ instanceof Activity) {
((Activity) this.ctx_).setRequestedOrientation(14);
}
}
/* JADX INFO: Access modifiers changed from: private */
public void unlockScreen() {
if (this.ctx_ instanceof Activity) {
((Activity) this.ctx_).setRequestedOrientation(10);
}
}
@Override // java.lang.Runnable
public void run() {
String path = this.ctx_.getResources().getString(R.string.remote_url);
try {
String str = HttpHelper.GetRemoteVersionInfo(path, 10000, Priority.INFO_INT);
UpgradeInfo upgradeInfo = parseVersionInfo(str);
if (upgradeInfo == null) {
Logging.info("Parse version info fail.");
this.handler_.sendEmptyMessage(-1);
} else if (upgradeInfo.getVersionCode() > this.localVersion_) {
Logging.info("New app version is detected(" + upgradeInfo.getVersionCode() + ")");
Message msg = new Message();
msg.what = 0;
Bundle bundle = new Bundle();
bundle.putBoolean(UPGRADEINFO_FORCE, upgradeInfo.isForceUpgrade());
bundle.putString(UPGRADEINFO_DESC, upgradeInfo.getDescription());
bundle.putString(UPGRADEINFO_URL, upgradeInfo.getApkUrl());
bundle.putString(UPGRADEINFO_VERSIONNAME, upgradeInfo.getVersionName());
bundle.putInt(UPGRADEINFO_VERSIONCODE, upgradeInfo.getVersionCode());
msg.setData(bundle);
this.handler_.sendMessage(msg);
}
} catch (Exception ex) {
this.handler_.sendEmptyMessage(-1);
Logging.error("Check upgrade error(" + ex.getMessage() + ")");
}
}
/* JADX INFO: Access modifiers changed from: private */
public void showUpgradeDialog(String description, final String url, final String versionName, final int versionCode, boolean isForceUpgrade) {
AlertDialog.Builder builer = new AlertDialog.Builder(this.ctx_);
builer.setTitle(this.ctx_.getResources().getString(R.string.upgrade) + "(V" + versionName + ")");
builer.setMessage(description);
builer.setPositiveButton(R.string.labelOK, new DialogInterface.OnClickListener() { // from class: cn.com.magnity.magnitycx.upgrade.CheckVersionTask.2
@Override // android.content.DialogInterface.OnClickListener
public void onClick(DialogInterface dialog, int which) {
String path = MagApplication.magParameter.otherDir + File.separator + "MAG-Cx." + versionName + ".apk";
File file = new File(path);
if (file.exists()) {
PackageManager pm = CheckVersionTask.this.ctx_.getPackageManager();
PackageInfo packInfo = pm.getPackageArchiveInfo(path, 1);
if (packInfo == null || packInfo.versionCode != versionCode) {
CheckVersionTask.this.startDownloadApk(url, versionName);
return;
} else {
CheckVersionTask.this.installApk(file);
return;
}
}
CheckVersionTask.this.startDownloadApk(url, versionName);
}
});
if (!isForceUpgrade) {
builer.setNegativeButton(R.string.labelCancel, new DialogInterface.OnClickListener() { // from class: cn.com.magnity.magnitycx.upgrade.CheckVersionTask.3
@Override // android.content.DialogInterface.OnClickListener
public void onClick(DialogInterface dialog, int which) {
CheckVersionTask.this.unlockScreen();
}
});
} else {
builer.setOnCancelListener(new DialogInterface.OnCancelListener() { // from class: cn.com.magnity.magnitycx.upgrade.CheckVersionTask.4
@Override // android.content.DialogInterface.OnCancelListener
public void onCancel(DialogInterface dialog) {
if (CheckVersionTask.this.ctx_ instanceof MainActivity) {
((MainActivity) CheckVersionTask.this.ctx_).onBackPressed();
}
}
});
}
AlertDialog dialog = builer.create();
dialog.setCanceledOnTouchOutside(false);
dialog.show();
}
/* JADX INFO: Access modifiers changed from: private */
public void startDownloadApk(final String url, final String version) {
HttpHelper.isCancelled = false;
this.threadUpgrading_ = new Thread() { // from class: cn.com.magnity.magnitycx.upgrade.CheckVersionTask.5
@Override // java.lang.Thread, java.lang.Runnable
public void run() {
try {
File file = HttpHelper.getRemoteApk(url, version, 10000, 30000, CheckVersionTask.this.handler_);
if (file == null) {
CheckVersionTask.this.handler_.sendEmptyMessage(-2);
} else {
CheckVersionTask.this.handler_.sendMessage(CheckVersionTask.this.handler_.obtainMessage(3, file));
}
} catch (Exception ex) {
Logging.error("Upgrading error(" + ex.getMessage() + ")");
CheckVersionTask.this.handler_.sendEmptyMessage(-2);
}
}
};
this.threadUpgrading_.start();
}
/* JADX INFO: Access modifiers changed from: private */
public void stopDownloadApk() {
HttpHelper.isCancelled = true;
try {
this.threadUpgrading_.join(500L);
this.threadUpgrading_ = null;
} catch (Exception e) {
this.threadUpgrading_ = null;
}
}
private File getOthersStoragePath(Context context) {
File file;
String state = Environment.getExternalStorageState();
if ("mounted".equals(state) && (file = new File(Environment.getExternalStorageDirectory(), "magnity/Cx/others")) != null) {
if (!file.exists()) {
file.mkdirs();
return file;
}
return file;
}
return null;
}
/* JADX INFO: Access modifiers changed from: private */
public void installApk(File file) {
Intent installIntent = new Intent("android.intent.action.VIEW");
installIntent.setFlags(268435456);
File usedFile = new File(getOthersStoragePath(this.ctx_), file.getName());
if (Build.VERSION.SDK_INT >= 24) {
installIntent.setFlags(1);
Uri contentUri = FileProvider.getUriForFile(this.ctx_, "cn.com.magnity.magnitycx.fileprovider", usedFile);
installIntent.setDataAndType(contentUri, "application/vnd.android.package-archive");
} else {
installIntent.setDataAndType(Uri.fromFile(usedFile), "application/vnd.android.package-archive");
}
this.ctx_.startActivity(installIntent);
}
}