|
|
@@ -1,14 +1,25 @@
|
|
|
package com.sheep.gamegroup.util.js;
|
|
|
|
|
|
+import android.text.TextUtils;
|
|
|
import android.view.View;
|
|
|
import android.webkit.WebView;
|
|
|
|
|
|
+import com.liulishuo.okdownload.DownloadTask;
|
|
|
+import com.liulishuo.okdownload.OkDownload;
|
|
|
+import com.liulishuo.okdownload.StatusUtil;
|
|
|
import com.sheep.gamegroup.absBase.BaseUMActivity;
|
|
|
+import com.sheep.gamegroup.event.BigEvent;
|
|
|
+import com.sheep.gamegroup.event.EventTypes;
|
|
|
+import com.sheep.gamegroup.greendao.download.DownLoadInfo;
|
|
|
+import com.sheep.gamegroup.model.entity.TaskEty;
|
|
|
import com.sheep.gamegroup.model.entity.UserEntity;
|
|
|
import com.sheep.gamegroup.util.CommonUtil;
|
|
|
+import com.sheep.gamegroup.util.DownloadUtil;
|
|
|
import com.sheep.gamegroup.util.SysAppUtil;
|
|
|
import com.sheep.gamegroup.util.TestUtil;
|
|
|
+import com.sheep.gamegroup.util.UMConfigUtils;
|
|
|
import com.sheep.gamegroup.util.share.ShareLinkConfig;
|
|
|
+import com.sheep.gamegroup.view.activity.TaskDetailAct;
|
|
|
import com.sheep.jiuyan.samllsheep.BuildConfig;
|
|
|
import com.sheep.jiuyan.samllsheep.R;
|
|
|
import com.sheep.jiuyan.samllsheep.SheepApp;
|
|
|
@@ -19,6 +30,7 @@ import com.tencent.mm.opensdk.constants.ConstantsAPI;
|
|
|
import com.tencent.mm.opensdk.modelpay.PayResp;
|
|
|
import com.umeng.socialize.bean.SHARE_MEDIA;
|
|
|
|
|
|
+import org.greenrobot.eventbus.EventBus;
|
|
|
import org.greenrobot.eventbus.Subscribe;
|
|
|
|
|
|
import java.util.HashMap;
|
|
|
@@ -157,4 +169,114 @@ public abstract class BaseActWeb extends BaseUMActivity {
|
|
|
}
|
|
|
loadJs(String.format(Locale.CHINA, "onAlipayResult('%s')", result));
|
|
|
}
|
|
|
+
|
|
|
+ protected TaskEty taskEty;
|
|
|
+
|
|
|
+ public void setTaskEty(TaskEty taskEty) {
|
|
|
+ this.taskEty = taskEty;
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 主要的事件广播接收更新处理
|
|
|
+ *
|
|
|
+ * @param event
|
|
|
+ */
|
|
|
+ @Subscribe
|
|
|
+ public void onEventMainThread(BigEvent event) {
|
|
|
+ if (taskEty != null && event.getData() instanceof DownLoadInfo) {
|
|
|
+ DownLoadInfo task = (DownLoadInfo) event.getData();
|
|
|
+ if (TextUtils.equals(task.getMDownloadUrl(), taskEty.getDownload_link())) {
|
|
|
+ switch (event.getEventTypes()) {
|
|
|
+ case DOWNLOAD_RUNNING:
|
|
|
+ loadJs(String.format(Locale.CHINA, "onUpdateDownloadStatus(%d)", DownloadUtil.STATUS_ING));
|
|
|
+ try {
|
|
|
+ String progressText = String.format(Locale.CHINA, "%d%%(%s)", Math.abs(task.getMPercent()), task.getAverageSpeed());//添加下载速度
|
|
|
+ loadJs(String.format(Locale.CHINA, "onUpdateDownloadProgress('%s')", progressText));
|
|
|
+ } catch (Exception e) {
|
|
|
+ e.printStackTrace();
|
|
|
+ }
|
|
|
+ break;
|
|
|
+ case DOWNLOAD_STOP:
|
|
|
+ loadJs(String.format(Locale.CHINA, "onUpdateDownloadStatus(%d)", DownloadUtil.STATUS_PAUSE));
|
|
|
+ loadJs(String.format(Locale.CHINA, "onUpdateDownloadBtnText('%s')", CommonUtil.CONTINUE_DOWNLOAD));
|
|
|
+ break;
|
|
|
+ case DOWNLOAD_COMPLETE:
|
|
|
+ //在这里处理任务完成的状态
|
|
|
+ loadJs(String.format(Locale.CHINA, "onUpdateDownloadBtnText('%s')", CommonUtil.START_INSTALL));
|
|
|
+ loadJs(String.format(Locale.CHINA, "onUpdateDownloadStatus(%d)", DownloadUtil.STATUS_FINISH));
|
|
|
+ updateDownloadBtn();
|
|
|
+ break;
|
|
|
+ case DOWNLOAD_CANCEL:
|
|
|
+ loadJs(String.format(Locale.CHINA, "onUpdateDownloadStatus(%d)", DownloadUtil.STATUS_DELETE));
|
|
|
+ loadJs(String.format(Locale.CHINA, "onUpdateDownloadBtnText('%s')", "已经取消"));
|
|
|
+ break;
|
|
|
+ case DOWNLOAD_FAIL:
|
|
|
+ loadJs(String.format(Locale.CHINA, "onUpdateDownloadStatus(%d)", DownloadUtil.STATUS_FAIL));
|
|
|
+ loadJs(String.format(Locale.CHINA, "onUpdateDownloadBtnText('%s')", CommonUtil.FAIL_DOWNLOAD));
|
|
|
+ break;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ private DownloadUtil downloadUtil;
|
|
|
+ public void updateDownloadBtn() {
|
|
|
+ if (taskEty != null) {
|
|
|
+ if (downloadUtil == null)
|
|
|
+ downloadUtil = new DownloadUtil();
|
|
|
+ TaskDetailAct.setBtnStr(taskEty, downloadUtil, object -> runOnUiThread(() -> {
|
|
|
+ if (object instanceof Integer) {
|
|
|
+ loadJs(String.format(Locale.CHINA, "onUpdateDownloadStatus(%d)", (int) object));
|
|
|
+ } else if (object instanceof String) {
|
|
|
+ loadJs(String.format(Locale.CHINA, "onUpdateDownloadBtnText('%s')", (String) object));
|
|
|
+ } else if (object instanceof Boolean) {
|
|
|
+ loadJs(String.format(Locale.CHINA, "onUpdateDownloadBtnEnable(%b)", (boolean) object));
|
|
|
+ }
|
|
|
+ }));
|
|
|
+ }
|
|
|
+ }
|
|
|
+ public void downloadApk(){
|
|
|
+ if (taskEty != null) {
|
|
|
+ if (downloadUtil == null)
|
|
|
+ downloadUtil = new DownloadUtil();
|
|
|
+
|
|
|
+ final DownloadTask task;
|
|
|
+ if (TextUtils.isEmpty(taskEty.getDownload_link()) || !taskEty.getDownload_link().contains("http")) {
|
|
|
+ G.showToast(R.string.error_download_link);
|
|
|
+ return;
|
|
|
+ }
|
|
|
+ task = DownloadUtil.getTask(taskEty);
|
|
|
+ final StatusUtil.Status statusOnStore = StatusUtil.getStatus(task);
|
|
|
+ final DownLoadInfo downLoadInfo = downloadUtil.getDownloadTaskByUrl(taskEty);
|
|
|
+ switch (statusOnStore) {
|
|
|
+ case RUNNING:
|
|
|
+ case PENDING://等待的
|
|
|
+ OkDownload.with().downloadDispatcher().cancel(task);
|
|
|
+ break;
|
|
|
+ case IDLE://空闲的
|
|
|
+ case UNKNOWN:
|
|
|
+ downloadUtil.start(downLoadInfo);
|
|
|
+ break;
|
|
|
+ case COMPLETED://有可能之前已经下载完成,但是数据库里已经没有数据了,这时只需要修改状态
|
|
|
+ if (task.getFile() != null) {
|
|
|
+ if (downloadUtil.checkFinish(downLoadInfo)) {//检查文件是否真的完成
|
|
|
+ downloadUtil.setDownloadTaskFinish(task.getUrl(), task.getFile().getAbsolutePath());
|
|
|
+ } else {//重新开始下载
|
|
|
+ downloadUtil.delete(downLoadInfo);
|
|
|
+ downloadUtil.start(downloadUtil.getDownloadTaskByUrl(taskEty));
|
|
|
+ downloadUtil.setDownloadTaskStatus(taskEty.getDownload_link(), DownloadUtil.STATUS_INIT);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ updateDownloadBtn();
|
|
|
+ break;
|
|
|
+ }
|
|
|
+ new Thread(() -> {
|
|
|
+ if (downloadUtil.addDownloadTask(downLoadInfo)) {
|
|
|
+ //发送红点信息
|
|
|
+ EventBus.getDefault().post(BigEvent.get().setEventTypes(EventTypes.TIPS_DOWN_ICON));
|
|
|
+ }
|
|
|
+ }).start();
|
|
|
+ UMConfigUtils.onEvent(UMConfigUtils.Event.TASK_DOWNLOAD);
|
|
|
+ }
|
|
|
+ }
|
|
|
}
|