Merge branch 'dev' of gitlab.ghzs.com:halo/assistant-android into dev
This commit is contained in:
@ -174,118 +174,6 @@ public class MainActivity extends BaseActivity {
|
||||
|
||||
private Handler handler = new Handler();
|
||||
|
||||
// todo 全局监听可能不应该放这里, MainActivity 销毁后此处无法工作
|
||||
// 黄壮华 添加观察者 修改2015/8/15
|
||||
private DataWatcher dataWatcher = new DataWatcher() {
|
||||
@Override
|
||||
public void onDataChanged(DownloadEntity downloadEntity) {
|
||||
if (downloadEntity.getStatus() != DownloadStatus.downloading) {
|
||||
LogUtils.uploadDownloadEvent(downloadEntity);
|
||||
}
|
||||
|
||||
if (DownloadStatus.hijack.equals(downloadEntity.getStatus())) {
|
||||
// 链接被劫持
|
||||
processHijack(downloadEntity);
|
||||
String nameAndPlatform = downloadEntity.getName() + ":"
|
||||
+ PlatformUtils.getInstance(getApplicationContext()).getPlatformName(downloadEntity.getPlatform());
|
||||
DataUtils.onMtaEvent(getApplicationContext(), "下载劫持", "游戏名字", nameAndPlatform, "网络状态" + DeviceUtils.getNetwork(getApplication()));
|
||||
return;
|
||||
} else if (DownloadStatus.notfound.equals(downloadEntity.getStatus())) {
|
||||
// 404 Not Found
|
||||
// 删除任务
|
||||
downloadEntity.setStatus(DownloadStatus.cancel);
|
||||
DownloadManager.getInstance(getApplicationContext()).cancel(downloadEntity.getUrl());
|
||||
toast("该链接已失效!请联系管理员。");
|
||||
|
||||
MtaHelper.onEventWithBasicDeviceInfo("下载失败弹窗",
|
||||
"游戏", downloadEntity.getName(),
|
||||
"平台", downloadEntity.getPlatform());
|
||||
|
||||
DialogUtils.showAlertDialog(AppManager.getInstance().currentActivity()
|
||||
, "下载失败"
|
||||
, "下载链接已失效,建议提交反馈"
|
||||
, "立即反馈", "取消"
|
||||
, () -> SuggestionActivity.startSuggestionActivity(AppManager.getInstance().currentActivity(),
|
||||
SuggestType.gameQuestion, "notfound",
|
||||
StringUtils.buildString(downloadEntity.getName(), ",问题反馈:下载链接失效"),
|
||||
new SimpleGameEntity(downloadEntity.getGameId(), downloadEntity.getName(), "")), null);
|
||||
return;
|
||||
} else if (DownloadStatus.neterror.equals(downloadEntity.getStatus())
|
||||
|| DownloadStatus.timeout.equals(downloadEntity.getStatus())) {
|
||||
|
||||
toast("网络不稳定,下载任务已暂停");
|
||||
DataLogUtils.uploadNeterrorLog(MainActivity.this, downloadEntity);
|
||||
|
||||
MtaHelper.onEventWithBasicDeviceInfo("下载自动暂停",
|
||||
"游戏", downloadEntity.getName(),
|
||||
"平台", downloadEntity.getPlatform());
|
||||
}
|
||||
if (DownloadStatus.done.equals(downloadEntity.getStatus())) {
|
||||
if (downloadEntity.getName().contains(getString(R.string.app_name))) {
|
||||
DataUtils.onEvent(MainActivity.this, "软件更新", "下载完成");
|
||||
startActivity(PackageUtils.getInstallIntent(MainActivity.this, downloadEntity.getPath(), true));
|
||||
DataLogUtils.uploadUpgradeLog(MainActivity.this, "install"); //上传更新安装数据
|
||||
} else {
|
||||
statDoneEvent(downloadEntity);
|
||||
|
||||
String platform = PlatformUtils.getInstance(getApplicationContext())
|
||||
.getPlatformName(downloadEntity.getPlatform());
|
||||
if (platform != null) {
|
||||
if (downloadEntity.isPluggable()) {
|
||||
// 弹出插件化提示框
|
||||
EventBus.getDefault().post(new EBShowDialog(PLUGGABLE, downloadEntity.getPath()));
|
||||
} else if (downloadEntity.isPlugin()) {
|
||||
toast(downloadEntity.getName() + " - " + platform + " - 下载完成");
|
||||
} else {
|
||||
toast(downloadEntity.getName() + " - 下载完成");
|
||||
}
|
||||
} else {
|
||||
toast(downloadEntity.getName() + " - 下载完成");
|
||||
}
|
||||
if (!downloadEntity.isPluggable()) {
|
||||
// 是否是自动安装
|
||||
if (mSp.getBoolean(SettingsFragment.AUTO_INSTALL_SP_KEY, true)) {
|
||||
if (FileUtils.isEmptyFile(downloadEntity.getPath())) {
|
||||
toast(R.string.install_failure_hint);
|
||||
DownloadManager.getInstance(MainActivity.this).cancel(downloadEntity.getUrl());
|
||||
} else {
|
||||
if (PackageUtils.isCanLaunchSetup(getApplicationContext(), downloadEntity.getPath())) {
|
||||
downloadEntity.getMeta().put(Constants.MARK_ALREADY_TRIGGERED_INSTALLATION, "YES");
|
||||
startActivity(PackageUtils.getInstallIntent(MainActivity.this, downloadEntity.getPath()));
|
||||
} else {
|
||||
// 弹出卸载提示框
|
||||
EventBus.getDefault().post(new EBShowDialog(PLUGGABLE, downloadEntity.getPath()));
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// 统计下载完成
|
||||
uploadData(downloadEntity.getGameId(), downloadEntity.getPlatform());
|
||||
}
|
||||
|
||||
// 下载过程分析统计
|
||||
PackageManager pm = getApplicationContext().getPackageManager();
|
||||
PackageInfo packageInfo = pm.getPackageArchiveInfo(downloadEntity.getPath(), PackageManager.GET_ACTIVITIES);
|
||||
if (packageInfo == null) {
|
||||
MtaHelper.onEventWithBasicDeviceInfo("解析包错误分析"
|
||||
, "游戏名字", downloadEntity.getName() + ":"
|
||||
+ PlatformUtils.getInstance(getApplicationContext()).getPlatformName(downloadEntity.getPlatform()));
|
||||
|
||||
MtaHelper.onEventWithBasicDeviceInfo(
|
||||
"解析包错误_新",
|
||||
"游戏", downloadEntity.getName() + ":" + PlatformUtils.getInstance(getApplicationContext()).getPlatformName(downloadEntity.getPlatform()));
|
||||
}
|
||||
}
|
||||
|
||||
if (downloadEntity.getStatus() == DownloadStatus.done) {
|
||||
EventBus.getDefault().post(new EBDownloadStatus("done", "", "", "", "", ""));
|
||||
}
|
||||
|
||||
DownloadNotificationHelper.addOrUpdateDownloadNotification(downloadEntity);
|
||||
}
|
||||
};
|
||||
|
||||
@Override
|
||||
protected void onCreate(Bundle savedInstanceState) {
|
||||
super.onCreate(savedInstanceState);
|
||||
@ -327,9 +215,6 @@ public class MainActivity extends BaseActivity {
|
||||
DataUtils.getGid();
|
||||
}
|
||||
|
||||
// 添加观察者
|
||||
DownloadManager.getInstance(this).addObserver(dataWatcher);
|
||||
|
||||
mPackageViewModel = ViewModelProviders.of(this, new PackageViewModel.Factory()).get(PackageViewModel.class);
|
||||
|
||||
final String message = Config.getExceptionMsg();
|
||||
@ -445,8 +330,6 @@ public class MainActivity extends BaseActivity {
|
||||
@Override
|
||||
protected void onDestroy() {
|
||||
super.onDestroy();
|
||||
// 退出后,同样需要更新通知栏进度
|
||||
// DownloadManager.getInstance(this).removeObserver(dataWatcher);
|
||||
|
||||
handler.removeCallbacksAndMessages(null);
|
||||
}
|
||||
@ -517,11 +400,6 @@ public class MainActivity extends BaseActivity {
|
||||
|
||||
private void checkNotificationPermission() {
|
||||
// 仅登录后再启动光环时请求一次权限
|
||||
/*if (!SPUtils.getBoolean(Constants.HAS_REQUESTED_NOTIFICATION_PERMISSIONS)
|
||||
&& UserManager.getInstance().isLoggedIn()) {
|
||||
SPUtils.setBoolean(Constants.HAS_REQUESTED_NOTIFICATION_PERMISSIONS, true);
|
||||
showNotificationHintDialog();
|
||||
}*/
|
||||
if (UserManager.getInstance().isLoggedIn()) {
|
||||
NotificationHelper.showNotificationHintDialog(NotificationUgc.LOGIN);
|
||||
}
|
||||
@ -540,73 +418,6 @@ public class MainActivity extends BaseActivity {
|
||||
.subscribe(new Response<>());
|
||||
}
|
||||
|
||||
// 统计下载完成事件
|
||||
private void statDoneEvent(DownloadEntity downloadEntity) {
|
||||
ExposureUtils.DownloadType type;
|
||||
String platform = PlatformUtils.getInstance(HaloApp.getInstance().getApplication()).getPlatformName(downloadEntity.getPlatform());
|
||||
|
||||
Map<String, Object> kv1 = new HashMap<>();
|
||||
kv1.put("版本", platform);
|
||||
kv1.put("状态", "下载完成");
|
||||
kv1.put("用户机型", Build.MODEL);
|
||||
kv1.put("设备IMEI", Util_System_Phone_State.getDeviceId(HaloApp.getInstance().getApplication()));
|
||||
kv1.put("网络状态", DeviceUtils.getNetwork(HaloApp.getInstance().getApplication()));
|
||||
kv1.put("光环助手版本", BuildConfig.VERSION_NAME);
|
||||
if (downloadEntity.isUpdate()) {
|
||||
type = ExposureUtils.DownloadType.UPDATE;
|
||||
if (downloadEntity.isPlugin()) {
|
||||
type = ExposureUtils.DownloadType.PLUGIN_UPDATE;
|
||||
}
|
||||
DataUtils.onEvent(MainActivity.this, "游戏更新", downloadEntity.getName(), kv1);
|
||||
} else {
|
||||
type = ExposureUtils.DownloadType.DOWNLOAD;
|
||||
}
|
||||
|
||||
Map<String, Object> kv2 = new HashMap<>();
|
||||
kv2.put("版本", downloadEntity.getPlatform());
|
||||
kv2.put("状态", "下载完成");
|
||||
kv2.put("位置", downloadEntity.getEntrance());
|
||||
kv2.put("游戏分平台", downloadEntity.getName() + "-" + platform);
|
||||
kv2.put("光环助手版本", BuildConfig.VERSION_NAME);
|
||||
DataUtils.onEvent(MainActivity.this, "游戏下载位置", downloadEntity.getName(), kv2);
|
||||
|
||||
if (downloadEntity.isPluggable()) {
|
||||
Map<String, Object> kv3 = new HashMap<>();
|
||||
kv3.put("下载", "下载完成");
|
||||
kv3.put("版本", downloadEntity.getPlatform());
|
||||
kv3.put("位置", downloadEntity.getEntrance());
|
||||
type = ExposureUtils.DownloadType.PLUGIN_DOWNLOAD;
|
||||
DataUtils.onEvent(MainActivity.this, "插件化", downloadEntity.getName(), kv3);
|
||||
|
||||
DataUtils.onMtaEvent(this,
|
||||
"插件化_新",
|
||||
"位置", downloadEntity.getEntrance(),
|
||||
"游戏", downloadEntity.getName() + "-" + downloadEntity.getPlatform(),
|
||||
"操作", "下载完成",
|
||||
"网络状态", DeviceUtils.getNetwork(HaloApp.getInstance().getApplication()));
|
||||
}
|
||||
|
||||
ExposureUtils.logADownloadCompleteExposureEvent(
|
||||
new GameEntity(downloadEntity.getGameId(), downloadEntity.getName()),
|
||||
downloadEntity.getPlatform(),
|
||||
downloadEntity.getExposureTrace(),
|
||||
type);
|
||||
|
||||
DataCollectionUtils.uploadDownload(this, downloadEntity, "完成");
|
||||
}
|
||||
|
||||
private void processHijack(DownloadEntity downloadEntity) {
|
||||
// 删除任务
|
||||
downloadEntity.setStatus(DownloadStatus.cancel);
|
||||
DownloadManager.getInstance(getApplicationContext()).cancel(downloadEntity.getUrl());
|
||||
// 弹出提示框
|
||||
EventBus.getDefault().post(new EBShowDialog(DOWNLOAD_HIJACK));
|
||||
// 记录链接被劫持
|
||||
DataCollectionUtils.uploadHijack(this, downloadEntity);
|
||||
// 上传劫持log
|
||||
DataLogUtils.uploadHijack(this, downloadEntity);
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean onKeyDown(int keyCode, KeyEvent event) {
|
||||
if (keyCode == KeyEvent.KEYCODE_BACK && event.getRepeatCount() == 0 && !mMainWrapperFragment.onHandleBackPressed()) {
|
||||
|
||||
Reference in New Issue
Block a user