|
|
@@ -1,477 +0,0 @@
|
|
|
-package com.sheep.gamegroup.view.activity;
|
|
|
-
|
|
|
-import android.app.Activity;
|
|
|
-import android.content.Intent;
|
|
|
-import android.os.Build;
|
|
|
-import android.os.Bundle;
|
|
|
-import android.support.annotation.Nullable;
|
|
|
-import android.support.annotation.RequiresApi;
|
|
|
-import android.text.TextUtils;
|
|
|
-import android.view.View;
|
|
|
-import android.webkit.WebChromeClient;
|
|
|
-import android.webkit.WebResourceRequest;
|
|
|
-import android.webkit.WebView;
|
|
|
-import android.webkit.WebViewClient;
|
|
|
-import android.widget.ImageView;
|
|
|
-import android.widget.TextView;
|
|
|
-import com.alibaba.fastjson.JSON;
|
|
|
-import com.alibaba.fastjson.JSONArray;
|
|
|
-import com.alibaba.fastjson.JSONObject;
|
|
|
-import com.arialyy.annotations.Download;
|
|
|
-import com.arialyy.aria.core.Aria;
|
|
|
-import com.arialyy.aria.core.download.DownloadTarget;
|
|
|
-import com.arialyy.aria.core.download.DownloadTask;
|
|
|
-import com.arialyy.aria.core.inf.IEntity;
|
|
|
-import com.bumptech.glide.Glide;
|
|
|
-import com.bumptech.glide.request.RequestOptions;
|
|
|
-import com.kfzs.duanduan.datashare.provider.download.DownLoadInfo;
|
|
|
-import com.kfzs.duanduan.event.BigEvent;
|
|
|
-import com.kfzs.duanduan.event.EventTypes;
|
|
|
-import com.kfzs.duanduan.services.DownloadTaskService;
|
|
|
-import com.kfzs.duanduan.utils.ApkUtils;
|
|
|
-import com.sheep.gamegroup.di.components.DaggerTaskDialogComponent;
|
|
|
-import com.sheep.gamegroup.di.modules.TaskDialogModule;
|
|
|
-import com.sheep.gamegroup.model.entity.BaseMessage;
|
|
|
-import com.sheep.gamegroup.model.entity.DialogEntity;
|
|
|
-import com.sheep.gamegroup.model.entity.Ext;
|
|
|
-import com.sheep.gamegroup.model.entity.TaskEty;
|
|
|
-import com.sheep.gamegroup.model.entity.TaskState;
|
|
|
-import com.sheep.gamegroup.model.util.EntityUtils;
|
|
|
-import com.sheep.gamegroup.model.util.SheepSubscriber;
|
|
|
-import com.sheep.gamegroup.presenter.TaskDialogContract;
|
|
|
-import com.sheep.gamegroup.presenter.TaskDialogPresenter;
|
|
|
-import com.sheep.gamegroup.util.CommonUtil;
|
|
|
-import com.sheep.gamegroup.util.DeviceUtil;
|
|
|
-import com.sheep.gamegroup.util.Jump2View;
|
|
|
-import com.sheep.gamegroup.util.MyListview;
|
|
|
-import com.sheep.gamegroup.util.UMConfigUtils;
|
|
|
-import com.sheep.gamegroup.view.adapter.TaskStateAdapter;
|
|
|
-import com.sheep.jiuyan.samllsheep.BuildConfig;
|
|
|
-import com.sheep.jiuyan.samllsheep.R;
|
|
|
-import com.sheep.jiuyan.samllsheep.SheepApp;
|
|
|
-import com.sheep.jiuyan.samllsheep.utils.G;
|
|
|
-import com.sheep.jiuyan.samllsheep.utils.PackageUtil;
|
|
|
-
|
|
|
-
|
|
|
-import org.greenrobot.eventbus.EventBus;
|
|
|
-
|
|
|
-import java.util.ArrayList;
|
|
|
-import java.util.List;
|
|
|
-
|
|
|
-import javax.inject.Inject;
|
|
|
-
|
|
|
-import butterknife.BindView;
|
|
|
-import butterknife.ButterKnife;
|
|
|
-import butterknife.OnClick;
|
|
|
-import rx.android.schedulers.AndroidSchedulers;
|
|
|
-import rx.functions.Action1;
|
|
|
-import rx.schedulers.Schedulers;
|
|
|
-
|
|
|
-/**
|
|
|
- * 弹框activity
|
|
|
- * Created by ljy on 2018/3/20.
|
|
|
- */
|
|
|
-
|
|
|
-public class DialogActivity extends Activity implements TaskDialogContract.View {
|
|
|
-
|
|
|
- @BindView(R.id.dialog_item_icon_iv)
|
|
|
- ImageView dialogItemIconIv;
|
|
|
- @BindView(R.id.dialog_item_name_tv)
|
|
|
- TextView dialogItemNameTv;
|
|
|
- @BindView(R.id.dialog_item_size_tv)
|
|
|
- TextView dialogItemSizeTv;
|
|
|
- @BindView(R.id.doalog_item_get_rewards_tv)
|
|
|
- TextView doalogItemGetRewardsTv;
|
|
|
- @BindView(R.id.webview)
|
|
|
- WebView webview;
|
|
|
- @BindView(R.id.start_task_tv)
|
|
|
- TextView start_task_tv;
|
|
|
- @BindView(R.id.dialog_title)
|
|
|
- TextView dialog_title;
|
|
|
- @BindView(R.id.listview)
|
|
|
- MyListview listview;
|
|
|
- private TaskEty taskEty;
|
|
|
- private List<TaskState> stateList = new ArrayList<>();//状态列表
|
|
|
- private TaskStateAdapter stateAdapter;
|
|
|
-
|
|
|
- private int type = -1;//0,领取任务 1,开始试玩 2,开始下载 3,开始安装;4,信用卡跳转
|
|
|
- private String buttonStr = CommonUtil.GET_TASK;
|
|
|
- private Activity activity;
|
|
|
-
|
|
|
- /**
|
|
|
- * 下载模块修改
|
|
|
- */
|
|
|
- private DownloadTaskService mDownloadTaskService;
|
|
|
-
|
|
|
- @Inject
|
|
|
- TaskDialogPresenter preference;
|
|
|
-
|
|
|
- @Override
|
|
|
- protected void onCreate(@Nullable Bundle savedInstanceState) {
|
|
|
- super.onCreate(savedInstanceState);
|
|
|
- setContentView(R.layout.download_item_dialog);
|
|
|
- ButterKnife.bind(this);
|
|
|
- activity = this;
|
|
|
-
|
|
|
- taskEty = (TaskEty) getIntent().getSerializableExtra("task_entity");
|
|
|
- if (taskEty == null) {
|
|
|
- finish();
|
|
|
- return;
|
|
|
- }
|
|
|
- initViews();
|
|
|
- initDatas();
|
|
|
- Aria.download(this).register();
|
|
|
- mDownloadTaskService = new DownloadTaskService(this);
|
|
|
- }
|
|
|
-
|
|
|
- private void initDatas() {
|
|
|
- webview.loadUrl(taskEty.getBoot_address());
|
|
|
- Glide.with(this)
|
|
|
- .load(taskEty.getIcon())
|
|
|
- .apply(new RequestOptions().dontAnimate())
|
|
|
- .into(dialogItemIconIv);
|
|
|
- dialogItemNameTv.setText(taskEty.getName());
|
|
|
- dialogItemSizeTv.setText( taskEty.getPackage_size() + "M");
|
|
|
- dialog_title.setText(taskEty.getTask_name());
|
|
|
-
|
|
|
- preference.getTaskState(taskEty.getRelease_task_id());
|
|
|
-
|
|
|
- }
|
|
|
-
|
|
|
- @Override
|
|
|
- protected void onResume() {
|
|
|
- super.onResume();
|
|
|
- setBtnState();
|
|
|
- }
|
|
|
-
|
|
|
- private void initViews() {
|
|
|
- DaggerTaskDialogComponent.builder()
|
|
|
- .netComponent(SheepApp.get(DialogActivity.this).getNetComponent())
|
|
|
- .taskDialogModule(new TaskDialogModule(this))
|
|
|
- .build()
|
|
|
- .inject(DialogActivity.this);
|
|
|
- webview.setWebChromeClient(new WebChromeClient() {
|
|
|
-
|
|
|
- });
|
|
|
- webview.getSettings().setJavaScriptEnabled(true);
|
|
|
- webview.setWebViewClient(new WebViewClient() {
|
|
|
- @RequiresApi(api = Build.VERSION_CODES.LOLLIPOP)
|
|
|
- @Override
|
|
|
- public boolean shouldOverrideUrlLoading(WebView view, WebResourceRequest request) {
|
|
|
- view.loadUrl(request.getUrl().toString());
|
|
|
- return true;
|
|
|
- }
|
|
|
- });
|
|
|
- stateAdapter = new TaskStateAdapter(activity, stateList);
|
|
|
- listview.setAdapter(stateAdapter);
|
|
|
- stateAdapter.notifyDataSetChanged();
|
|
|
-
|
|
|
-
|
|
|
- }
|
|
|
-
|
|
|
- @OnClick({R.id.doalog_item_get_rewards_tv, R.id.dialog_close, R.id.start_task_tv})
|
|
|
- public void onViewClicked(View view) {
|
|
|
- switch (view.getId()) {
|
|
|
- case R.id.doalog_item_get_rewards_tv:
|
|
|
- Jump2View.getInstance().tryGoWithdrawal(activity, null);
|
|
|
- finish();
|
|
|
- break;
|
|
|
- case R.id.dialog_close:
|
|
|
- finish();
|
|
|
- break;
|
|
|
- case R.id.start_task_tv:
|
|
|
- startStask();
|
|
|
- break;
|
|
|
- }
|
|
|
- }
|
|
|
-
|
|
|
- /**
|
|
|
- * 开始任务或者下载游戏、试玩
|
|
|
- */
|
|
|
- private void startStask() {
|
|
|
- DownloadTarget task = null;
|
|
|
- try{
|
|
|
- switch (type){
|
|
|
- case -1://领取任务
|
|
|
- if(taskEty.getAcceptedTaskId() < 1){//没有正在进行的任务
|
|
|
- acceptedTask();
|
|
|
- } else {//先取消正在进行的任务
|
|
|
-
|
|
|
- Jump2View.getInstance()
|
|
|
- .goNoticeAct(activity, new DialogEntity(null,
|
|
|
- "是否放弃正在运行中的任务?",
|
|
|
- "是",
|
|
|
- "否",
|
|
|
- null));
|
|
|
-
|
|
|
- }
|
|
|
- break;
|
|
|
- case DownloadTaskService.STATUS_INSTALLED://开始试玩
|
|
|
- toTestPlay();
|
|
|
- break;
|
|
|
- case DownloadTaskService.STATUS_INIT://开始下载
|
|
|
- if(taskEty.needDownloadApp()){
|
|
|
- if(TextUtils.isEmpty(taskEty.getDownload_link()) || !taskEty.getDownload_link().contains("http")){
|
|
|
- G.showToast(R.string.error_download_link);
|
|
|
- return;
|
|
|
- }
|
|
|
- task = Aria.download(this).load(taskEty.getDownload_link());
|
|
|
- }
|
|
|
- final DownLoadInfo downLoadInfo = mDownloadTaskService.getDownloadTaskByUrl(taskEty);
|
|
|
- if(task != null) {
|
|
|
- if (task.getTaskState() == IEntity.STATE_RUNNING) {
|
|
|
- task.stop();
|
|
|
- } else if (task.getTaskState() == IEntity.STATE_FAIL) {
|
|
|
- task.cancel(true);
|
|
|
- task.removeRecord();
|
|
|
- } else {
|
|
|
- mDownloadTaskService.start(downLoadInfo);
|
|
|
- }
|
|
|
- new Thread(new Runnable() {
|
|
|
- @Override
|
|
|
- public void run() {
|
|
|
- if(mDownloadTaskService.addDownloadTask(downLoadInfo)){
|
|
|
- //发送红点信息
|
|
|
- EventBus.getDefault().post(BigEvent.get().setEventTypes(EventTypes.TIPS_DOWN_ICON));
|
|
|
- }
|
|
|
- }
|
|
|
- }).start();
|
|
|
- }
|
|
|
- UMConfigUtils.onEvent(UMConfigUtils.Event.TASK_DOWNLOAD);
|
|
|
- break;
|
|
|
- case DownloadTaskService.STATUS_FINISH://开始安装
|
|
|
- final DownLoadInfo downLoadInfo1 = mDownloadTaskService.getDownloadTaskByUrl(taskEty);
|
|
|
- boolean isInstalled = PackageUtil.isAppInstalled(SheepApp.mContext, taskEty.getPackage_names());
|
|
|
- if(isInstalled){
|
|
|
- if(taskEty.getTask_type() != 3){
|
|
|
- start_task_tv.setText(CommonUtil.OPEN_APPLY);
|
|
|
- }else {
|
|
|
- start_task_tv.setText(CommonUtil.START_PLAY);
|
|
|
- }
|
|
|
- type = DownloadTaskService.STATUS_INSTALLED;
|
|
|
- toTestPlay();
|
|
|
- return;
|
|
|
- }else if(!TextUtils.isEmpty(PackageUtil.isExistsFile(taskEty.getPackage_names()))){
|
|
|
- ApkUtils.installApk(activity, PackageUtil.isExistsFile(taskEty.getPackage_names()));
|
|
|
- }else{
|
|
|
- if(taskEty.needDownloadApp()){
|
|
|
- if(TextUtils.isEmpty(taskEty.getDownload_link()) || !taskEty.getDownload_link().contains("http")){
|
|
|
- G.showToast(R.string.error_download_link);
|
|
|
- return;
|
|
|
- }
|
|
|
- task = Aria.download(this).load(taskEty.getDownload_link());
|
|
|
- }
|
|
|
- if(task != null) {
|
|
|
- task.cancel(true);
|
|
|
- task.removeRecord();
|
|
|
- mDownloadTaskService.start(downLoadInfo1);
|
|
|
- type = DownloadTaskService.STATUS_INIT;
|
|
|
- }
|
|
|
- }
|
|
|
- break;
|
|
|
- case 4://信用卡----------应该不会用到了------因为信用卡不会在这里显示
|
|
|
- Jump2View.getInstance().goCreditCardTaskList(activity, null);
|
|
|
- break;
|
|
|
- case 10://H5
|
|
|
- Ext ext;
|
|
|
- if(taskEty == null) {
|
|
|
- G.showToast(R.string.service_data_error);
|
|
|
- } else if((ext = EntityUtils.getExtInfo(taskEty.getExt())) == null || TextUtils.isEmpty(ext.getUrl())){
|
|
|
- Jump2View.getInstance().goTaskDetailView(activity, taskEty.getId());
|
|
|
- } else {
|
|
|
- Jump2View.getInstance().goWeb(activity, ext.getUrl());
|
|
|
- }
|
|
|
- break;
|
|
|
- }
|
|
|
- }catch (Exception e){
|
|
|
- e.printStackTrace();
|
|
|
- }
|
|
|
- }
|
|
|
-
|
|
|
- private void acceptedTask() {
|
|
|
- JSONObject object = new JSONObject();
|
|
|
- object.put("device_id",DeviceUtil.getDeviceId(activity));
|
|
|
- object.put("release_task_id", Integer.valueOf(taskEty.getRelease_task_id()+""));
|
|
|
- preference.acceptedTask(object);
|
|
|
- UMConfigUtils.onEvent(UMConfigUtils.Event.TASK_ACCEPT);
|
|
|
- }
|
|
|
-
|
|
|
- /**
|
|
|
- * 去试玩
|
|
|
- */
|
|
|
- private void toTestPlay(){
|
|
|
- PackageUtil.startApp(activity, taskEty.getPackage_names());
|
|
|
- }
|
|
|
-
|
|
|
- /**
|
|
|
- * 按钮状态
|
|
|
- */
|
|
|
- private void setBtnState(){
|
|
|
- type = -1;
|
|
|
- if(taskEty.getRunTask() == 0){//领取任务
|
|
|
- buttonStr = CommonUtil.GET_TASK;
|
|
|
- type = -1;
|
|
|
- }else if(taskEty.getTask_type() == 2){//信用卡业务----------应该不会用到了------因为信用卡不会在这里显示
|
|
|
- type = 4;
|
|
|
- buttonStr = CommonUtil.START_TASK;
|
|
|
- dialogItemSizeTv.setVisibility(View.INVISIBLE);
|
|
|
- }else if(taskEty.getTask_type() == 4){//h5
|
|
|
- type = 10;
|
|
|
- buttonStr = CommonUtil.START_TASK;
|
|
|
- dialogItemSizeTv.setVisibility(View.INVISIBLE);
|
|
|
- }else{
|
|
|
- TaskDetailAct.setBtnStr(taskEty, mDownloadTaskService, new Action1<Object>() {
|
|
|
- @Override
|
|
|
- public void call(Object o) {
|
|
|
- if(o instanceof Integer){
|
|
|
- type = (int) o;
|
|
|
- } else if( o instanceof String){
|
|
|
- start_task_tv.setText((String) o);
|
|
|
- } else if( o instanceof Boolean){
|
|
|
- start_task_tv.setEnabled((Boolean) o);
|
|
|
- }
|
|
|
- }
|
|
|
- });
|
|
|
- return;
|
|
|
- }
|
|
|
- start_task_tv.setText(buttonStr);
|
|
|
- }
|
|
|
-
|
|
|
- /**
|
|
|
- * 接收任务 成功
|
|
|
- * @param o
|
|
|
- */
|
|
|
- @Override
|
|
|
- public void startTaskUpdataView(Object o) {
|
|
|
- try{
|
|
|
- BaseMessage baseMessage = (BaseMessage) o;
|
|
|
- if(baseMessage.getCode() == 200){
|
|
|
- taskEty.setRunTask(1);
|
|
|
- setBtnState();
|
|
|
- G.showToast("接收任务成功");
|
|
|
- CommonUtil.getInstance().setTAskEnty(taskEty);
|
|
|
- }
|
|
|
- EventBus.getDefault().post(new BigEvent().setEventTypes(EventTypes.ONFRESH_TRYMAKEMANY_PAGE));
|
|
|
- }catch (Exception e){
|
|
|
- e.printStackTrace();
|
|
|
- }
|
|
|
-
|
|
|
- }
|
|
|
-
|
|
|
- @Override
|
|
|
- public void startTaskFailView(Object o) {
|
|
|
-
|
|
|
- G.showToast(((BaseMessage)o).getMsg()+ "");
|
|
|
-
|
|
|
- }
|
|
|
-
|
|
|
- @Override
|
|
|
- public void getStateSuccess(Object o) {
|
|
|
-
|
|
|
- if(o == null){
|
|
|
- return;
|
|
|
- }
|
|
|
- BaseMessage baseMessage = (BaseMessage) o;
|
|
|
-
|
|
|
- List<TaskState> stateList = JSONArray.parseArray(JSON.toJSONString(baseMessage.getData()), TaskState.class);
|
|
|
-
|
|
|
- if(stateList != null && stateList.size()>0){
|
|
|
- this.stateList.clear();
|
|
|
- this.stateList.addAll(stateList);
|
|
|
-
|
|
|
- stateAdapter.notifyDataSetChanged();
|
|
|
-
|
|
|
- }
|
|
|
-
|
|
|
-
|
|
|
- }
|
|
|
-
|
|
|
- @Override
|
|
|
- public void getStatefail(Object o) {
|
|
|
-
|
|
|
-
|
|
|
- }
|
|
|
-
|
|
|
- @Download.onPre void onPre(DownloadTask task) {
|
|
|
- if(task.getKey().equals(taskEty.getDownload_link())) {
|
|
|
- start_task_tv.setText("准备下载中");
|
|
|
- }
|
|
|
- }
|
|
|
- @Download.onTaskStart void taskStart(DownloadTask task) {
|
|
|
- if(task.getKey().equals(taskEty.getDownload_link())) {
|
|
|
- start_task_tv.setText("开始下载中");
|
|
|
- }
|
|
|
- }
|
|
|
- @Download.onTaskResume void taskResume(DownloadTask task) {
|
|
|
- if(task.getKey().equals(taskEty.getDownload_link())) {
|
|
|
- start_task_tv.setText("恢复下载中");
|
|
|
- }
|
|
|
- }
|
|
|
- //在这里处理任务执行中的状态,如进度进度条的刷新
|
|
|
- @Download.onTaskRunning protected void running(DownloadTask task) {
|
|
|
- if(task.getKey().equals(taskEty.getDownload_link())) {
|
|
|
- int p = task.getPercent(); //任务进度百分比
|
|
|
-// mDownloadTaskService.setDownloadTaskPercent(p, task.getCurrentProgress()/1024d/1024d,task.getFileSize()/1024d/1024d,0,task.getKey());
|
|
|
- String speed = task.getConvertSpeed(); //转换单位后的下载速度,单位转换需要在配置文件中打开
|
|
|
- long speed1 = task.getSpeed(); //原始byte长度速度
|
|
|
- start_task_tv.setText(p + "%");
|
|
|
- System.out.println("Aria p " + p + ", speed = " + speed);
|
|
|
- }
|
|
|
- }
|
|
|
-
|
|
|
- @Download.onTaskStop void taskStop(DownloadTask task) {
|
|
|
- if(task.getKey().equals(taskEty.getDownload_link())) {
|
|
|
-// mDownloadTaskService.setDownloadTaskStatus(task.getKey(), DownloadTaskService.STATUS_PAUSE);
|
|
|
- start_task_tv.setText(CommonUtil.CONTINUE_DOWNLOAD);
|
|
|
- }
|
|
|
- }
|
|
|
-
|
|
|
- @Download.onNoSupportBreakPoint void onNoSupportBreakPoint(DownloadTask task) {
|
|
|
- }
|
|
|
-
|
|
|
- @Download.onTaskCancel void taskCancel(DownloadTask task) {
|
|
|
- if(task.getKey().equals(taskEty.getDownload_link())) {
|
|
|
-// mDownloadTaskService.deleteDownloadTaskByDownloadUrl(task.getKey());
|
|
|
- start_task_tv.setText("已经取消");
|
|
|
- }
|
|
|
- }
|
|
|
-
|
|
|
- @Download.onTaskFail void taskFail(DownloadTask task) {
|
|
|
- if(task.getKey().equals(taskEty.getDownload_link())) {
|
|
|
-// mDownloadTaskService.setDownloadTaskStatus(task.getKey(), DownloadTaskService.STATUS_FAIL);
|
|
|
- start_task_tv.setText(CommonUtil.FAIL_DOWNLOAD);
|
|
|
- }
|
|
|
- }
|
|
|
-
|
|
|
- @Download.onTaskComplete void taskComplete(DownloadTask task) {
|
|
|
- if(task.getKey().equals(taskEty.getDownload_link())) {
|
|
|
-// mDownloadTaskService.setDownloadTaskFinish(task.getKey(), task.getDownloadPath());
|
|
|
- //在这里处理任务完成的状态
|
|
|
- start_task_tv.setText(CommonUtil.START_INSTALL);
|
|
|
- type = 3;
|
|
|
-// PackageUtil.installApk(activity, task.getDownloadPath());
|
|
|
- }
|
|
|
- }
|
|
|
-
|
|
|
- @Override
|
|
|
- protected void onActivityResult(int requestCode, int resultCode, Intent data) {
|
|
|
- super.onActivityResult(requestCode, resultCode, data);
|
|
|
- if(requestCode == 0 && resultCode == RESULT_OK && taskEty != null){
|
|
|
- SheepApp.getInstance().getNetComponent().getApiService().giveUpTask(taskEty.getAcceptedTaskId())
|
|
|
- .subscribeOn(Schedulers.io())
|
|
|
- .observeOn(AndroidSchedulers.mainThread())
|
|
|
- .subscribe(new SheepSubscriber<BaseMessage>(activity) {
|
|
|
- @Override
|
|
|
- public void onNext(BaseMessage baseMessage) {
|
|
|
- acceptedTask();
|
|
|
- CommonUtil.getInstance().setTAskEnty(null);
|
|
|
- }
|
|
|
-
|
|
|
- @Override
|
|
|
- public void onError(BaseMessage baseMessage) {
|
|
|
- G.showToast(baseMessage);
|
|
|
- }
|
|
|
- });
|
|
|
- }
|
|
|
- }
|
|
|
-}
|