Explorar el Código

game upgrade feature

hanjing hace 6 años
padre
commit
aed3f2de60

+ 100 - 18
app/src/main/java/com/sheep/gamegroup/helper/DownloadHelper.java

@@ -11,6 +11,7 @@ import com.liulishuo.okdownload.StatusUtil;
 import com.sheep.gamegroup.event.BigEvent;
 import com.sheep.gamegroup.event.EventTypes;
 import com.sheep.gamegroup.greendao.download.DownLoadInfo;
+import com.sheep.gamegroup.util.DownloadTextUtl;
 import com.sheep.gamegroup.util.DownloadUtil;
 import com.kfzs.duanduan.utils.ApkUtils;
 import com.sheep.gamegroup.model.api.IDownload;
@@ -26,6 +27,8 @@ import org.greenrobot.eventbus.EventBus;
 
 import rx.functions.Action1;
 
+import static com.sheep.gamegroup.model.entity.TaskEty.TASK_TYPE_APP;
+
 /**
  * Created by realicing on 2018/7/3.
  * realicing@sina.com
@@ -33,8 +36,10 @@ import rx.functions.Action1;
  */
 public class DownloadHelper {
     private int downLoadType;
+
     /**
      * 更新游戏下载与响应点击
+     *
      * @param showSimpleText
      * @param iTask
      * @param down_tv
@@ -42,32 +47,34 @@ public class DownloadHelper {
     public void updateDownloadTaskView(boolean showSimpleText, final IDownload iTask, final TextView down_tv) {
         updateDownloadTaskView(showSimpleText, iTask, down_tv, null);
     }
+
     public void updateDownloadTaskView(boolean showSimpleText, final IDownload iTask, final TextView down_tv, final Action1<Object> callBack) {
-        updateDownloadTaskView(showSimpleText, iTask, down_tv, callBack,0);
+        updateDownloadTaskView(showSimpleText, iTask, down_tv, callBack, 0);
     }
-    public void updateDownloadTaskView(boolean showSimpleText, final IDownload iTask, final TextView down_tv, final Action1<Object> callBack,int type) {
-        if(downloadUtil == null){
+
+    public void updateDownloadTaskView(boolean showSimpleText, final IDownload iTask, final TextView down_tv, final Action1<Object> callBack, int type) {
+        if (downloadUtil == null) {
             downloadUtil = new DownloadUtil();
         }
-        TaskDetailAct.setBtnStr(iTask, downloadUtil, new Action1<Object>() {
+        setBtnStr(iTask, downloadUtil, new Action1<Object>() {
             @Override
             public void call(Object o) {
-                if(o instanceof Integer){
+                if (o instanceof Integer) {
                     downLoadType = (int) o;
-                } else if( o instanceof String){
+                } else if (o instanceof String) {
                     down_tv.setText((String) o);
-                } else if( o instanceof Boolean){
+                } else if (o instanceof Boolean) {
                     down_tv.setEnabled((Boolean) o);
                 }
 //                if(callBack != null)
 //                    callBack.call(o);
             }
         }, showSimpleText);
-        if(type == 0){
+        if (type == 0) {
             down_tv.setOnClickListener(new View.OnClickListener() {
                 @Override
                 public void onClick(View view) {
-                    if(callBack != null)
+                    if (callBack != null)
                         callBack.call(-1);
                     downloadApp(iTask);
                 }
@@ -78,12 +85,11 @@ public class DownloadHelper {
     private DownloadUtil downloadUtil;
 
     /**
-     * @param download
-     *   //下载应用
+     * @param download //下载应用
      */
-    private void downloadApp( IDownload download) {
+    private void downloadApp(IDownload download) {
         Activity activity = SheepApp.getInstance().getCurrentActivity();
-        switch (downLoadType){
+        switch (downLoadType) {
             case DownloadUtil.STATUS_INIT://可以下载
                 final DownloadTask task;
                 if (TextUtils.isEmpty(download.getDownload_link()) || !download.getDownload_link().contains("http")) {
@@ -103,8 +109,8 @@ public class DownloadHelper {
                         downloadUtil.start(downLoadInfo);
                         break;
                     case COMPLETED://有可能之前已经下载完成,但是数据库里已经没有数据了,这时只需要修改状态
-                        if(task.getFile() != null) {
-                            if(downloadUtil.checkFinish(downLoadInfo)){//检查文件是否真的完成
+                        if (task.getFile() != null) {
+                            if (downloadUtil.checkFinish(downLoadInfo)) {//检查文件是否真的完成
                                 DownLoadInfo newDownloadInfo = downloadUtil.setDownloadTaskFinish(task.getUrl(), task.getFile().getAbsolutePath());
                                 downLoadType = DownloadUtil.STATUS_FINISH;
                                 EventBus.getDefault().post(new BigEvent().setEventTypes(EventTypes.DOWNLOAD_COMPLETE).setData(newDownloadInfo));
@@ -130,13 +136,13 @@ public class DownloadHelper {
                 break;
             case DownloadUtil.STATUS_FINISH://已经下载完成,可以安装
                 String path = PackageUtil.isExistsFile(download.getPackage_names(), download.getDownload_link());
-                if(TextUtils.isEmpty(path)){//数据库保存有下载完成的状态,但是应用已经被删除,需要修复其下载状态
-                    if(TextUtils.isEmpty(download.getDownload_link()) || !download.getDownload_link().contains("http")){
+                if (TextUtils.isEmpty(path)) {//数据库保存有下载完成的状态,但是应用已经被删除,需要修复其下载状态
+                    if (TextUtils.isEmpty(download.getDownload_link()) || !download.getDownload_link().contains("http")) {
                         G.showToast(R.string.error_download_link);
                         return;
                     }
                     final DownLoadInfo oldDownloadInfo = downloadUtil.getDownloadTaskByUrl(download);
-                    if(oldDownloadInfo != null) {
+                    if (oldDownloadInfo != null) {
                         downloadUtil.delete(oldDownloadInfo);
                         downloadUtil.start(downloadUtil.getDownloadTaskByUrl(download));
                         downloadUtil.setDownloadTaskStatus(download.getDownload_link(), DownloadUtil.STATUS_INIT);
@@ -152,8 +158,84 @@ public class DownloadHelper {
         }
     }
 
+    public static void setBtnStr(IDownload taskEty, DownloadUtil mDownloadTaskService, Action1<Object> action1) {
+        setBtnStr(taskEty, mDownloadTaskService, action1, false);
+    }
+
+    public static void setBtnStr(IDownload taskEty, DownloadUtil mDownloadTaskService, Action1<Object> action1, boolean showSimpleText) {
+        boolean isInstalled = PackageUtil.isAppInstalled(SheepApp.getInstance(), taskEty.getPackage_names());
+        action1.call(true);
+        if (isInstalled) {
+            boolean needUpgrade = PackageUtil.needAppUpgrade(SheepApp.getInstance(), taskEty.getPackage_names(), taskEty.getVersions());
+            if (!needUpgrade) {
+                action1.call(DownloadUtil.STATUS_INSTALLED);
+                switch (taskEty.getTask_type()) {// 1时间试玩任务 3应用下载 1000连续任务, 1002 1003游戏任务 1002平台游戏,1003 腾讯游戏,1004 小米游戏
+                    case TASK_TYPE_APP:
+                        action1.call(DownloadTextUtl.getOpenApplyText(showSimpleText));
+                        break;
+                    default:
+                        action1.call(DownloadTextUtl.getStartOpenText(showSimpleText));
+                        break;
+                }
+            } else {
+                setBtnStr(taskEty, mDownloadTaskService, action1, showSimpleText, needUpgrade);
+            }
+        } else {
+            if (taskEty.getDownload_link() == null || !taskEty.getDownload_link().startsWith("http")) {
+                action1.call(DownloadTextUtl.getNoDownloadText(showSimpleText));
+                action1.call(false);
+                action1.call(DownloadUtil.STATUS_INIT);
+            } else {
+                setBtnStr(taskEty, mDownloadTaskService, action1, showSimpleText, false);
+            }
+        }
+    }
+
+    private static void setBtnStr(IDownload taskEty, DownloadUtil mDownloadTaskService, Action1<Object> action1, boolean showSimpleText, boolean upgrade) {
+        boolean isExistApk = !TextUtils.isEmpty(PackageUtil.isExistsFile(taskEty.getPackage_names(), taskEty.getDownload_link()));
+        DownLoadInfo downLoadInfo = mDownloadTaskService.getDownloadTaskByUrl(taskEty);
+        Integer mStatus = downLoadInfo.getMStatus();
+        int taskState = mStatus == null ? 0 : mStatus;
+        switch (taskState) {
+            case DownloadUtil.STATUS_ING:
+                action1.call(DownloadUtil.STATUS_INIT);
+                action1.call(DownloadTextUtl.getProgressText(showSimpleText, downLoadInfo));
+                break;
+            case DownloadUtil.STATUS_PAUSE:
+                action1.call(DownloadUtil.STATUS_INIT);
+                action1.call(DownloadTextUtl.getContinueDownloadText(showSimpleText));
+                break;
+            case DownloadUtil.STATUS_FINISH:
+                if (isExistApk) {
+                    action1.call(DownloadUtil.STATUS_FINISH);
+                    action1.call(DownloadTextUtl.getStartInstallText(showSimpleText));
+                } else {
+                    action1.call(DownloadUtil.STATUS_INIT);
+                    if (upgrade) {
+                        action1.call(DownloadTextUtl.getUpgradeAppText(showSimpleText));
+                    } else {
+                        action1.call(DownloadTextUtl.getStartDownloadText(showSimpleText));
+                    }
+                }
+                break;
+            case DownloadUtil.STATUS_FAIL:
+                action1.call(DownloadUtil.STATUS_INIT);
+                action1.call(DownloadTextUtl.getFailDownloadText(showSimpleText));
+                break;
+            default:
+                action1.call(DownloadUtil.STATUS_INIT);
+                if (upgrade) {
+                    action1.call(DownloadTextUtl.getUpgradeAppText(showSimpleText));
+                } else {
+                    action1.call(DownloadTextUtl.getStartDownloadText(showSimpleText));
+                }
+                break;
+        }
+    }
+
     /**
      * 更新下载状态
+     *
      * @param status
      */
     public void updateState(int status) {

+ 2 - 0
app/src/main/java/com/sheep/gamegroup/model/api/IDownload.java

@@ -18,4 +18,6 @@ public interface IDownload {
     String getPackage_size();//任务的包大小
 
     int getAppId();//应用的id
+
+    String getVersions();
 }

+ 105 - 79
app/src/main/java/com/sheep/gamegroup/model/entity/TaskEty.java

@@ -118,7 +118,7 @@ public class TaskEty implements Serializable, IDownload {
     public void setScreenshotsList(List<ScreenshotsEntity> screenshotsList) {
         List<ScreenshotsEntity> removeList = ListUtil.emptyList();
         for (ScreenshotsEntity screenshotsEntity : screenshotsList) {
-            if(TextUtils.isEmpty(screenshotsEntity.getImg()))
+            if (TextUtils.isEmpty(screenshotsEntity.getImg()))
                 removeList.add(screenshotsEntity);
         }
         screenshotsList.removeAll(removeList);
@@ -163,11 +163,11 @@ public class TaskEty implements Serializable, IDownload {
 
     public void setDesc(String desc) {
         regroupDesc(desc);
-        this.desc = desc+"";
+        this.desc = desc + "";
     }
 
     public String getBonus() {
-        return TextUtils.isEmpty(bonus)?"0":bonus;
+        return TextUtils.isEmpty(bonus) ? "0" : bonus;
     }
 
     public void setBonus(String bonus) {
@@ -211,6 +211,11 @@ public class TaskEty implements Serializable, IDownload {
         return app_id;
     }
 
+    @Override
+    public String getVersions() {
+        return application != null ? application.getVersions() : null;
+    }
+
     public void setPackage_size(String package_size) {
         this.package_size = package_size;
     }
@@ -361,35 +366,33 @@ public class TaskEty implements Serializable, IDownload {
     }
 
 
-
-
-
-
-
     /**
      * 是否是应用自动审核完成的任务
+     *
      * @return
      */
-    public boolean isAppAutoCommitTask(){
+    public boolean isAppAutoCommitTask() {
         return inspect_type == INSPECT_TYPE_SHEEP;
     }
+
     /**
      * 是否是sdk自动审核任务
+     *
      * @return
      */
-    public boolean isSdkAutoCommitTask(){
+    public boolean isSdkAutoCommitTask() {
         return inspect_type == INSPECT_TYPE_SDK;
     }
 
     //判断任务是否需要下载app
     public boolean needDownloadApp() {
-        if(TextUtils.isEmpty(package_names)){//无包名情况下不能下载
+        if (TextUtils.isEmpty(package_names)) {//无包名情况下不能下载
             return false;
         }
-        if(TextUtils.isEmpty(download_link)){//无下载连接的任务不能下载
+        if (TextUtils.isEmpty(download_link)) {//无下载连接的任务不能下载
             return false;
         }
-        switch (task_type){//1时间试玩任务 2 信用卡任务 3应用下载 4h5业务 1001畅思 1000连续任务, 1002 1003游戏任务 1002平台游戏,1003 腾讯游戏,1004 小米游戏
+        switch (task_type) {//1时间试玩任务 2 信用卡任务 3应用下载 4h5业务 1001畅思 1000连续任务, 1002 1003游戏任务 1002平台游戏,1003 腾讯游戏,1004 小米游戏
             case TASK_TYPE_CREDIT_CARD:
             case TASK_TYPE_H5:
             case TASK_TYPE_APPLET:
@@ -410,48 +413,51 @@ public class TaskEty implements Serializable, IDownload {
 
     /**
      * 重组desc字段
+     *
      * @param desc
      */
-    public Object regroupDesc(String desc){
-        if(TextUtils.isEmpty(desc)){
+    public Object regroupDesc(String desc) {
+        if (TextUtils.isEmpty(desc)) {
             return desc;
         }
-        if(desc.startsWith("[")){
+        if (desc.startsWith("[")) {
             List<TaskDescEntity> taskDescEntityList = JSONArray.parseArray(desc, TaskDescEntity.class);
             setDescEntityList(taskDescEntityList);
             return taskDescEntityList;
-        }else if (desc.startsWith("{")){
+        } else if (desc.startsWith("{")) {
             TaskDescEntity taskDescEntity = JSONObject.parseObject(desc, TaskDescEntity.class);
             setDescEntity(taskDescEntity);
             return taskDescEntity;
-        }else {
+        } else {
             return desc;
         }
     }
-    private Object regroupScreenshots(String desc){
-        if(TextUtils.isEmpty(desc)){
+
+    private Object regroupScreenshots(String desc) {
+        if (TextUtils.isEmpty(desc)) {
             return desc;
         }
-        if(desc.startsWith("[")){
+        if (desc.startsWith("[")) {
             List<ScreenshotsEntity> taskDescEntityList = JSONArray.parseArray(desc, ScreenshotsEntity.class);
             setScreenshotsList(taskDescEntityList);
             return taskDescEntityList;
-        }else {
+        } else {
             return desc;
         }
     }
 
     /**
      * 是否是老任务--任务详情中显示不一样
+     *
      * @return
      */
-    public boolean isOldTask(){
-        if(task_type == TASK_TYPE_SUCCESSION){
-            if(!ListUtil.isEmpty(child)){
+    public boolean isOldTask() {
+        if (task_type == TASK_TYPE_SUCCESSION) {
+            if (!ListUtil.isEmpty(child)) {
                 return child.get(0).isOldTask();
             }
         }
-        if(descEntity == null && descEntityList == null){
+        if (descEntity == null && descEntityList == null) {
             return true;
         }
         return false;
@@ -459,6 +465,7 @@ public class TaskEty implements Serializable, IDownload {
 
     /**
      * 是否是游戏任务
+     *
      * @return
      */
     public boolean isGameTask() {
@@ -466,18 +473,18 @@ public class TaskEty implements Serializable, IDownload {
     }
 
 
-
-
-
     /**
      * 是否是游戏任务中的预约任务
+     *
      * @return
      */
     public boolean isGameReservation() {
         return is_reservation == 1;//是否预约任务 0不是 1是
     }
+
     /**
      * 是否游戏任务中的预约任务还不可以下载
+     *
      * @return
      */
     public boolean isGameReservationCantDownload() {
@@ -488,8 +495,8 @@ public class TaskEty implements Serializable, IDownload {
     /**
      * 游戏详情,title显示
      */
-    public String getDetailShow(){
-        switch (task_type){
+    public String getDetailShow() {
+        switch (task_type) {
             case TASK_TYPE_GAME_SHEEP:
             default:
                 return "平台游戏";
@@ -502,18 +509,19 @@ public class TaskEty implements Serializable, IDownload {
 
     /**
      * 获取当前可领取子任务的id
+     * <p>
+     * 1、 任务未开启时——即将开启
+     * 2、 任务未领取时——可领取
+     * 3、 任务已领取待完成时——进行中
+     * 4、 任务已提交待审核——待审核
+     * 5、 任务审核通过——已完成
+     * 6、 任务审核失败——审核失败
+     * 7、任务已过期未完成——已过期
      *
-     1、 任务未开启时——即将开启
-     2、 任务未领取时——可领取
-     3、 任务已领取待完成时——进行中
-     4、 任务已提交待审核——待审核
-     5、 任务审核通过——已完成
-     6、 任务审核失败——审核失败
-     7、任务已过期未完成——已过期
      * @return
      */
     public int getCanAcceptedChildId() {
-        if(!ListUtil.isEmpty(child)){
+        if (!ListUtil.isEmpty(child)) {
             for (TaskChild taskChild : child) {
                 switch (taskChild.getStatus()) {
                     case STATUS_CAN_RECEIVE:
@@ -523,20 +531,22 @@ public class TaskEty implements Serializable, IDownload {
         }
         return -1;
     }
+
     /**
      * 获取正在进行中的子任务的id
+     * <p>
+     * 1、 任务未开启时——即将开启
+     * 2、 任务未领取时——可领取
+     * 3、 任务已领取待完成时——进行中
+     * 4、 任务已提交待审核——待审核
+     * 5、 任务审核通过——已完成
+     * 6、 任务审核失败——审核失败
+     * 7、任务已过期未完成——已过期
      *
-     1、 任务未开启时——即将开启
-     2、 任务未领取时——可领取
-     3、 任务已领取待完成时——进行中
-     4、 任务已提交待审核——待审核
-     5、 任务审核通过——已完成
-     6、 任务审核失败——审核失败
-     7、任务已过期未完成——已过期
      * @return
      */
     public int getRunningChildId() {
-        if(!ListUtil.isEmpty(child)){
+        if (!ListUtil.isEmpty(child)) {
             for (TaskChild taskChild : child) {
                 switch (taskChild.getStatus()) {
                     case STATUS_RUNNING:
@@ -546,20 +556,22 @@ public class TaskEty implements Serializable, IDownload {
         }
         return -1;
     }
+
     /**
      * 获取正在进行中的子任务的id
+     * <p>
+     * 1、 任务未开启时——即将开启
+     * 2、 任务未领取时——可领取
+     * 3、 任务已领取待完成时——进行中
+     * 4、 任务已提交待审核——待审核
+     * 5、 任务审核通过——已完成
+     * 6、 任务审核失败——审核失败
+     * 7、任务已过期未完成——已过期
      *
-     1、 任务未开启时——即将开启
-     2、 任务未领取时——可领取
-     3、 任务已领取待完成时——进行中
-     4、 任务已提交待审核——待审核
-     5、 任务审核通过——已完成
-     6、 任务审核失败——审核失败
-     7、任务已过期未完成——已过期
      * @return
      */
     public int getFailChildPosition() {
-        if(!ListUtil.isEmpty(child)){
+        if (!ListUtil.isEmpty(child)) {
             int i = 0;
             for (TaskChild taskChild : child) {
                 switch (taskChild.getStatus()) {
@@ -571,44 +583,48 @@ public class TaskEty implements Serializable, IDownload {
         }
         return -1;
     }
+
     /**
      * 根据状态获取当前第一个子任务
+     * <p>
+     * 1、 任务未开启时——即将开启
+     * 2、 任务未领取时——可领取
+     * 3、 任务已领取待完成时——进行中
+     * 4、 任务已提交待审核——待审核
+     * 5、 任务审核通过——已完成
+     * 6、 任务审核失败——审核失败
+     * 7、任务已过期未完成——已过期
      *
-     1、 任务未开启时——即将开启
-     2、 任务未领取时——可领取
-     3、 任务已领取待完成时——进行中
-     4、 任务已提交待审核——待审核
-     5、 任务审核通过——已完成
-     6、 任务审核失败——审核失败
-     7、任务已过期未完成——已过期
      * @return
      */
     public TaskChild getCanCommitChild(@TaskChild.STATUS int status) {
-        if(!ListUtil.isEmpty(child)){
+        if (!ListUtil.isEmpty(child)) {
             for (TaskChild taskChild : child) {
-                if(status == taskChild.getStatus()){
+                if (status == taskChild.getStatus()) {
                     return taskChild;
                 }
             }
         }
         return null;
     }
+
     /**
      * 获取当前第一个可提交子任务的already_accepted_task_id
+     * <p>
+     * 1、 任务未开启时——即将开启
+     * 2、 任务未领取时——可领取
+     * 3、 任务已领取待完成时——进行中
+     * 4、 任务已提交待审核——待审核
+     * 5、 任务审核通过——已完成
+     * 6、 任务审核失败——审核失败
+     * 7、任务已过期未完成——已过期
      *
-     1、 任务未开启时——即将开启
-     2、 任务未领取时——可领取
-     3、 任务已领取待完成时——进行中
-     4、 任务已提交待审核——待审核
-     5、 任务审核通过——已完成
-     6、 任务审核失败——审核失败
-     7、任务已过期未完成——已过期
      * @return
      */
     public int getCanCommitChildRelease_task_id() {
         //先找审核失败的子任务
         TaskChild commitScreenShotTask = getCanCommitChild(STATUS_FAIL);
-        if(commitScreenShotTask == null){
+        if (commitScreenShotTask == null) {
             //再找进行中的子任务
             commitScreenShotTask = getCanCommitChild(STATUS_RUNNING);
         }
@@ -617,13 +633,16 @@ public class TaskEty implements Serializable, IDownload {
 
     /**
      * 有子任务可以接受
+     *
      * @return
      */
     public boolean hasChildCanAccepted() {
         return getCanAcceptedChildId() > 0;
     }
+
     /**
      * 有子任务正在进行中
+     *
      * @return
      */
     public boolean hasChildRunning() {
@@ -633,6 +652,7 @@ public class TaskEty implements Serializable, IDownload {
     /**
      * 传入的上一次提交的id是最后一个子任务的already_accepted_task_id
      * 或者传入的是一个普通任务的id
+     *
      * @param lastCommitId
      * @return
      */
@@ -645,10 +665,11 @@ public class TaskEty implements Serializable, IDownload {
     /**
      * 不是连续任务返回true
      * 是连续任务时,子任务中第一个处理接受任务状态时返回true
+     *
      * @return
      */
     public boolean canCancelTask() {
-        switch (task_type){
+        switch (task_type) {
             case TASK_TYPE_SUCCESSION:
                 TaskChild taskChild = ListUtil.getItem(child, 0);
                 return taskChild == null || taskChild.getStatus() == STATUS_RUNNING;
@@ -656,8 +677,10 @@ public class TaskEty implements Serializable, IDownload {
                 return true;
         }
     }
+
     /**
      * 是否连续任务
+     *
      * @return
      */
     public boolean isSuccession() {
@@ -666,19 +689,20 @@ public class TaskEty implements Serializable, IDownload {
 
     /**
      * 小绵羊截屏方案下该任务是否需要小绵羊来截屏
+     *
      * @return
      */
     public boolean needShotScreen() {
-        if(inspect_type != INSPECT_TYPE_PERSION){//非手动审核任务不需要上传截图
+        if (inspect_type != INSPECT_TYPE_PERSION) {//非手动审核任务不需要上传截图
             return false;
         }
-        if(TextUtils.isEmpty(package_names)){//无包名情况下也不能截屏
+        if (TextUtils.isEmpty(package_names)) {//无包名情况下也不能截屏
             return false;
         }
-        if(TextUtils.isEmpty(download_link)){//无下载连接的任务也无需截屏
+        if (TextUtils.isEmpty(download_link)) {//无下载连接的任务也无需截屏
             return false;
         }
-        switch (task_type){//1时间试玩任务 2 信用卡任务 3应用下载 4h5业务 1001畅思 1000连续任务, 1002 1003游戏任务 1002平台游戏,1003 腾讯游戏,1004 小米游戏
+        switch (task_type) {//1时间试玩任务 2 信用卡任务 3应用下载 4h5业务 1001畅思 1000连续任务, 1002 1003游戏任务 1002平台游戏,1003 腾讯游戏,1004 小米游戏
             case TASK_TYPE_CREDIT_CARD:
             case TASK_TYPE_H5:
             case TASK_TYPE_APPLET:
@@ -699,15 +723,17 @@ public class TaskEty implements Serializable, IDownload {
     /**
      * 是否是小程序 1007
      */
-    public boolean isApplet(){
+    public boolean isApplet() {
         return task_type == TASK_TYPE_APPLET;
     }
+
     /**
      * 是否是现金任务 1008
      */
-    public boolean isXianJinTask(){
+    public boolean isXianJinTask() {
         return task_type == TASK_TYPE_XIAN_JIN;
     }
+
     //task_type 非连续任务类型 1时间试玩任务 2 信用卡任务 3应用下载 4h5业务 1001畅思 1000连续任务, 1002 1003游戏任务 1002平台游戏,1003 腾讯游戏,1004 小米游戏 1008 现金任务
     public static final int TASK_TYPE_TIME = 1;
     public static final int TASK_TYPE_CREDIT_CARD = 2;

+ 5 - 0
app/src/main/java/com/sheep/gamegroup/module/game/model/DownloadInfoHelper.java

@@ -77,4 +77,9 @@ public class DownloadInfoHelper implements IDownload {
     public int getAppId() {
         return  downLoadInfo.getMGameID() == null ? 0 : downLoadInfo.getMGameID();
     }
+
+    @Override
+    public String getVersions() {
+        return null;
+    }
 }

+ 2 - 1
app/src/main/java/com/sheep/gamegroup/module/webview/fragment/BaseFgtWeb.java

@@ -10,6 +10,7 @@ import com.liulishuo.okdownload.StatusUtil;
 import com.sheep.gamegroup.event.BigEvent;
 import com.sheep.gamegroup.event.EventTypes;
 import com.sheep.gamegroup.greendao.download.DownLoadInfo;
+import com.sheep.gamegroup.helper.DownloadHelper;
 import com.sheep.gamegroup.model.api.IWeb;
 import com.sheep.gamegroup.model.entity.TaskEty;
 import com.sheep.gamegroup.util.CommonUtil;
@@ -196,7 +197,7 @@ public abstract class BaseFgtWeb extends BaseFragment implements UMShareListener
         if (taskEty != null) {
             if (downloadUtil == null)
                 downloadUtil = new DownloadUtil();
-            TaskDetailAct.setBtnStr(taskEty, downloadUtil, object -> SheepApp.getInstance().getCurrentActivity().runOnUiThread(() -> {
+            DownloadHelper.setBtnStr(taskEty, downloadUtil, object -> SheepApp.getInstance().getCurrentActivity().runOnUiThread(() -> {
                 if (object instanceof Integer) {
                     type = (int) object;
                     loadJs(String.format(Locale.CHINA, "onUpdateDownloadStatus(%d)", (int) object));

+ 2 - 1
app/src/main/java/com/sheep/gamegroup/module/webview/fragment/BaseFgtWebX5.java

@@ -9,6 +9,7 @@ import com.liulishuo.okdownload.StatusUtil;
 import com.sheep.gamegroup.event.BigEvent;
 import com.sheep.gamegroup.event.EventTypes;
 import com.sheep.gamegroup.greendao.download.DownLoadInfo;
+import com.sheep.gamegroup.helper.DownloadHelper;
 import com.sheep.gamegroup.model.api.IWeb;
 import com.sheep.gamegroup.model.entity.TaskEty;
 import com.sheep.gamegroup.util.CommonUtil;
@@ -196,7 +197,7 @@ public abstract class BaseFgtWebX5 extends BaseFragment implements UMShareListen
         if (taskEty != null) {
             if (downloadUtil == null)
                 downloadUtil = new DownloadUtil();
-            TaskDetailAct.setBtnStr(taskEty, downloadUtil, object -> SheepApp.getInstance().getCurrentActivity().runOnUiThread(() -> {
+            DownloadHelper.setBtnStr(taskEty, downloadUtil, object -> SheepApp.getInstance().getCurrentActivity().runOnUiThread(() -> {
                 if (object instanceof Integer) {
                     type = (int) object;
                     loadJs(String.format(Locale.CHINA, "onUpdateDownloadStatus(%d)", (int) object));

+ 1 - 0
app/src/main/java/com/sheep/gamegroup/util/CommonUtil.java

@@ -150,6 +150,7 @@ public class CommonUtil {
     public static String GAME_INSTALL = "安装游戏";
     public static String GAME_OPEN = "开始试玩";
     public static String GAME_RESERVATION = "预约游戏";
+    public static String UPGRADE_APP = "开始更新";
     public static final String TASK_AUDIT = "audit";
     private static CommonUtil commonUtil;
 

+ 11 - 1
app/src/main/java/com/sheep/gamegroup/util/DownloadTextUtl.java

@@ -16,6 +16,7 @@ public class DownloadTextUtl {
     public static String getHasReservationText(boolean showSimpleText) {
         return showSimpleText ? "已预约" : "已经预约";
     }
+
     public static String getReservationText(boolean showSimpleText) {
         return showSimpleText ? "预约" : "预约下载";
     }
@@ -23,28 +24,37 @@ public class DownloadTextUtl {
     public static String getStartDownloadText(boolean showSimpleText) {
         return showSimpleText ? "下载" : CommonUtil.START_DOWNLOAD;
     }
+
     public static String getStartInstallText(boolean showSimpleText) {
         return showSimpleText ? "安装" : CommonUtil.START_INSTALL;
     }
+
     public static String getStartOpenText(boolean showSimpleText) {
         return showSimpleText ? "打开" : CommonUtil.GAME_OPEN;
     }
+
     public static String getOpenApplyText(boolean showSimpleText) {
         return showSimpleText ? "打开" : CommonUtil.OPEN_APPLY;
     }
 
+    public static String getUpgradeAppText(boolean showSimpleText) {
+        return showSimpleText ? "更新" : CommonUtil.UPGRADE_APP;
+    }
+
     public static String getContinueDownloadText(boolean showSimpleText) {
         return showSimpleText ? "继续" : CommonUtil.CONTINUE_DOWNLOAD;
     }
+
     public static String getFailDownloadText(boolean showSimpleText) {
         return showSimpleText ? "失败" : CommonUtil.FAIL_DOWNLOAD;
     }
+
     public static String getTaskCancelText(boolean showSimpleText) {
         return showSimpleText ? "已取消" : "已经取消";
     }
 
     public static String getProgressText(boolean showSimpleText, DownLoadInfo task) {
-        if(showSimpleText)
+        if (showSimpleText)
             return String.format(Locale.CHINA, "%d%%", Math.abs(task.getMPercent()));
         else
             return String.format(Locale.CHINA, "%d%%(%s)", Math.abs(task.getMPercent()), task.getAverageSpeed());//添加下载速度;

+ 35 - 28
app/src/main/java/com/sheep/gamegroup/util/DownloadUtil.java

@@ -73,6 +73,7 @@ public class DownloadUtil {
      */
     public static final int STATUS_INSTALLED = 0X6;
 
+
     public DownloadUtil() {
     }
 
@@ -336,6 +337,7 @@ public class DownloadUtil {
     public DownLoadInfo setDownloadTaskTotal(String downloadUrl, double totalLength) {
         return DDProviderHelper.getInstance().setDownloadTaskTotal(downloadUrl, totalLength);
     }
+
     /**
      * Set the task status
      *
@@ -376,17 +378,17 @@ public class DownloadUtil {
     }
 
 
-    public static DownloadTask getTask(IDownload download){
-        return DownloadUtil.getTask(download.getDownload_link(),  ClassFileHelper.DIR + File.separator + download.getPackage_names() + download.getDownload_link().hashCode() + ClassFileHelper.FILE_SUFFIX);
+    public static DownloadTask getTask(IDownload download) {
+        return DownloadUtil.getTask(download.getDownload_link(), ClassFileHelper.DIR + File.separator + download.getPackage_names() + download.getDownload_link().hashCode() + ClassFileHelper.FILE_SUFFIX);
     }
 
 
-    public static DownloadTask getTask(DownLoadInfo downLoadInfo){
+    public static DownloadTask getTask(DownLoadInfo downLoadInfo) {
         return DownloadUtil.getTask(downLoadInfo.getMDownloadUrl(), downLoadInfo.getMApkPath());
     }
 
 
-    public static DownloadTask getTask(String downloadUrl, String filePath){
+    public static DownloadTask getTask(String downloadUrl, String filePath) {
         DownloadTask.Builder builder = new DownloadTask.Builder(downloadUrl, new File(filePath));
         // Set the minimum internal milliseconds of progress callbacks to 100ms.(default is 3000)
         builder.setMinIntervalMillisCallbackProcess(1000);
@@ -402,6 +404,7 @@ public class DownloadUtil {
 //        DownloadTask task = builder.build();
         return builder.build();
     }
+
     public void start(DownLoadInfo downLoadInfo) {
         if (SpUtils.getDownNotice(SheepApp.getInstance()) == 0
                 && NetUtil.isConnected(SheepApp.getInstance())
@@ -425,32 +428,32 @@ public class DownloadUtil {
 
         //3.4.9添加 记录下载游戏,可通过我的游戏列表中获取游戏
         int gameId = getGameId(downLoadInfo);
-        if(gameId < 1){//不合法的gameId
+        if (gameId < 1) {//不合法的gameId
             return;
         }
         SheepApp.getInstance().getNetComponent().getApiService().recordAppDownloads(downLoadInfo.getMGameID())
-            .subscribeOn(Schedulers.io())
-            .observeOn(AndroidSchedulers.mainThread())
-            .subscribe(new SheepSubscriber<BaseMessage>(SheepApp.getInstance()) {
-                @Override
-                public void onNext(BaseMessage baseMessage) {
-                    if(TestUtil.isDev())
-                        G.showToast(baseMessage);
-                }
-
-                @Override
-                public void onError(BaseMessage baseMessage) {
-                    if(TestUtil.isDev())
-                        G.showToast(baseMessage);
-                }
-            });
+                .subscribeOn(Schedulers.io())
+                .observeOn(AndroidSchedulers.mainThread())
+                .subscribe(new SheepSubscriber<BaseMessage>(SheepApp.getInstance()) {
+                    @Override
+                    public void onNext(BaseMessage baseMessage) {
+                        if (TestUtil.isDev())
+                            G.showToast(baseMessage);
+                    }
+
+                    @Override
+                    public void onError(BaseMessage baseMessage) {
+                        if (TestUtil.isDev())
+                            G.showToast(baseMessage);
+                    }
+                });
     }
 
     public int getGameId(DownLoadInfo downLoadInfo) {
         String url;
-        if(downLoadInfo.getMGameID() != null && downLoadInfo.getMGameID() > 0){
+        if (downLoadInfo.getMGameID() != null && downLoadInfo.getMGameID() > 0) {
             return downLoadInfo.getMGameID();
-        } else if(!TextUtils.isEmpty(url = downLoadInfo.getMDownloadUrl())){
+        } else if (!TextUtils.isEmpty(url = downLoadInfo.getMDownloadUrl())) {
             return NumberFormatUtils.parseInteger(StringUtils.getQueryParameter(url, "id"));
         }
         return 0;
@@ -458,11 +461,12 @@ public class DownloadUtil {
 
     /**
      * 删除文件并删除记录
+     *
      * @param downLoadInfo
      */
     public boolean delete(DownLoadInfo downLoadInfo) {
-        if(downLoadInfo != null) {
-            if(downLoadInfo.getMDownloadTaskId() != null) {
+        if (downLoadInfo != null) {
+            if (downLoadInfo.getMDownloadTaskId() != null) {
                 OkDownload.with().downloadDispatcher().cancel(downLoadInfo.getMDownloadTaskId());
                 OkDownload.with().breakpointStore().remove(downLoadInfo.getMDownloadTaskId());
             }
@@ -473,13 +477,15 @@ public class DownloadUtil {
         }
         return false;
     }
+
     /**
      * 删除文件并删除记录
+     *
      * @param downLoadInfo
      */
     public boolean deleteDownloadTask(DownLoadInfo downLoadInfo) {
-        if(downLoadInfo != null) {
-            if(downLoadInfo.getMDownloadTaskId() != null) {
+        if (downLoadInfo != null) {
+            if (downLoadInfo.getMDownloadTaskId() != null) {
                 try {
                     OkDownload.with().downloadDispatcher().cancel(downLoadInfo.getMDownloadTaskId());
                     OkDownload.with().breakpointStore().remove(downLoadInfo.getMDownloadTaskId());
@@ -498,15 +504,16 @@ public class DownloadUtil {
 
     /**
      * 检查文件是否真的下载完成
+     *
      * @param downLoadInfo
      * @return
      */
     public boolean checkFinish(DownLoadInfo downLoadInfo) {
-        if(downLoadInfo.getMApkPath() == null){
+        if (downLoadInfo.getMApkPath() == null) {
             return false;
         }
         String packageName = ApkUtils.getUnInstallApkPackageName(SheepApp.getInstance(), downLoadInfo.getMApkPath());
-        if(!TextUtils.isEmpty(packageName)){
+        if (!TextUtils.isEmpty(packageName)) {
             return true;
         }
         File file = new File(downLoadInfo.getMApkPath());

+ 2 - 1
app/src/main/java/com/sheep/gamegroup/util/js/BaseActWeb.java

@@ -12,6 +12,7 @@ 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.helper.DownloadHelper;
 import com.sheep.gamegroup.model.api.IWeb;
 import com.sheep.gamegroup.model.entity.TaskEty;
 import com.sheep.gamegroup.model.entity.UserEntity;
@@ -219,7 +220,7 @@ public abstract class BaseActWeb extends BaseUMActivity implements IWeb {
         if (taskEty != null) {
             if (downloadUtil == null)
                 downloadUtil = new DownloadUtil();
-            TaskDetailAct.setBtnStr(taskEty, downloadUtil, object -> runOnUiThread(() -> {
+            DownloadHelper.setBtnStr(taskEty, downloadUtil, object -> runOnUiThread(() -> {
                 if (object instanceof Integer) {
                     type = (int) object;
                     loadJs(String.format(Locale.CHINA, "onUpdateDownloadStatus(%d)", (int) object));

+ 2 - 1
app/src/main/java/com/sheep/gamegroup/util/js/BaseActWebX5.java

@@ -12,6 +12,7 @@ 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.helper.DownloadHelper;
 import com.sheep.gamegroup.model.api.IWeb;
 import com.sheep.gamegroup.model.entity.TaskEty;
 import com.sheep.gamegroup.model.entity.UserEntity;
@@ -220,7 +221,7 @@ public abstract class BaseActWebX5 extends BaseUMActivity implements IWeb {
         if (taskEty != null) {
             if (downloadUtil == null)
                 downloadUtil = new DownloadUtil();
-            TaskDetailAct.setBtnStr(taskEty, downloadUtil, object -> runOnUiThread(() -> {
+            DownloadHelper.setBtnStr(taskEty, downloadUtil, object -> runOnUiThread(() -> {
                 if (object instanceof Integer) {
                     type = (int) object;
                     loadJs(String.format(Locale.CHINA, "onUpdateDownloadStatus(%d)", (int) object));

+ 1 - 0
app/src/main/java/com/sheep/gamegroup/view/activity/ActMain.java

@@ -112,6 +112,7 @@ public class ActMain extends BaseActYmPermissionCheck {
     }
 
     private void setSystemUiVisibility(boolean isDark) {
+//        StatusBarUtil.setStatusBarColor(this, 0x50000000);
         StatusBarUtil.setStatusBarColor(this, Color.TRANSPARENT);
         StatusBarUtil.setImmersiveStatusBar(this, isDark);
     }

+ 2 - 61
app/src/main/java/com/sheep/gamegroup/view/activity/TaskDetailAct.java

@@ -27,6 +27,7 @@ import com.sheep.gamegroup.greendao.download.AcceptTaskRecord;
 import com.sheep.gamegroup.greendao.download.DownLoadInfo;
 import com.sheep.gamegroup.greendao.download.ProcessRecord;
 import com.sheep.gamegroup.greendao.download.ScreenShotRecord;
+import com.sheep.gamegroup.helper.DownloadHelper;
 import com.sheep.gamegroup.helper.TaskHelper;
 import com.sheep.gamegroup.model.api.ICallBack;
 import com.sheep.gamegroup.model.api.IDownload;
@@ -743,7 +744,7 @@ public class TaskDetailAct extends AbsChooseImageActivity implements TaskDetailC
      * 设置第一按钮的状态和文字显示
      */
     private void setFirstBtnState() {
-        setBtnStr(taskEty, downloadUtil, new Action1<Object>() {
+        DownloadHelper.setBtnStr(taskEty, downloadUtil, new Action1<Object>() {
             @Override
             public void call(Object o) {
                 if (o instanceof Integer) {
@@ -794,66 +795,6 @@ public class TaskDetailAct extends AbsChooseImageActivity implements TaskDetailC
 
     }
 
-    public static void setBtnStr(IDownload taskEty, DownloadUtil mDownloadTaskService, Action1<Object> action1) {
-        setBtnStr(taskEty, mDownloadTaskService, action1, false);
-    }
-
-    public static void setBtnStr(IDownload taskEty, DownloadUtil mDownloadTaskService, Action1<Object> action1, boolean showSimpleText) {
-        boolean isInstalled = PackageUtil.isAppInstalled(SheepApp.getInstance(), taskEty.getPackage_names());
-        boolean isExistApk = !TextUtils.isEmpty(PackageUtil.isExistsFile(taskEty.getPackage_names(), taskEty.getDownload_link()));
-        String buttonStr;
-        action1.call(true);
-        if (isInstalled) {
-            action1.call(DownloadUtil.STATUS_INSTALLED);
-            switch (taskEty.getTask_type()) {// 1时间试玩任务 3应用下载 1000连续任务, 1002 1003游戏任务 1002平台游戏,1003 腾讯游戏,1004 小米游戏
-                case TASK_TYPE_APP:
-                    buttonStr = DownloadTextUtl.getOpenApplyText(showSimpleText);
-                    break;
-                default:
-                    buttonStr = DownloadTextUtl.getStartOpenText(showSimpleText);
-                    break;
-            }
-        } else {
-            if (taskEty.getDownload_link() == null || !taskEty.getDownload_link().startsWith("http")) {
-                buttonStr = DownloadTextUtl.getNoDownloadText(showSimpleText);
-                action1.call(false);
-                action1.call(DownloadUtil.STATUS_INIT);
-            } else {
-                DownLoadInfo downLoadInfo = mDownloadTaskService.getDownloadTaskByUrl(taskEty);
-                Integer mStatus = downLoadInfo.getMStatus();
-                int taskState = mStatus == null ? 0 : mStatus;
-                switch (taskState) {
-                    case DownloadUtil.STATUS_ING:
-                        action1.call(DownloadUtil.STATUS_INIT);
-                        buttonStr = DownloadTextUtl.getProgressText(showSimpleText, downLoadInfo);
-                        break;
-                    case DownloadUtil.STATUS_PAUSE:
-                        action1.call(DownloadUtil.STATUS_INIT);
-                        buttonStr = DownloadTextUtl.getContinueDownloadText(showSimpleText);
-                        break;
-                    case DownloadUtil.STATUS_FINISH:
-                        if (isExistApk) {
-                            action1.call(DownloadUtil.STATUS_FINISH);
-                            buttonStr = DownloadTextUtl.getStartInstallText(showSimpleText);
-                        } else {
-                            action1.call(DownloadUtil.STATUS_INIT);
-                            buttonStr = DownloadTextUtl.getStartDownloadText(showSimpleText);
-                        }
-                        break;
-                    case DownloadUtil.STATUS_FAIL:
-                        action1.call(DownloadUtil.STATUS_INIT);
-                        buttonStr = DownloadTextUtl.getFailDownloadText(showSimpleText);
-                        break;
-                    default:
-                        action1.call(DownloadUtil.STATUS_INIT);
-                        buttonStr = DownloadTextUtl.getStartDownloadText(showSimpleText);
-                        break;
-                }
-            }
-        }
-        action1.call(buttonStr);
-    }
-
     /**
      * 下载模块修改
      */

+ 41 - 17
app/src/main/java/com/sheep/jiuyan/samllsheep/utils/PackageUtil.java

@@ -12,6 +12,7 @@ import android.content.pm.ResolveInfo;
 import android.net.Uri;
 import android.os.Build;
 import android.support.v4.content.FileProvider;
+import android.text.TextUtils;
 
 import com.sheep.gamegroup.util.UMConfigUtils;
 import com.sheep.jiuyan.samllsheep.SheepApp;
@@ -54,17 +55,17 @@ public class PackageUtil {
 
 
     /*
-    * 判断是否安装
-    * check the app is installed
-    */
+     * 判断是否安装
+     * check the app is installed
+     */
     public static boolean isAppInstalled(Context context, String packageName) {
         PackageInfo packageInfo;
         try {
-            PackageManager  manager=context.getPackageManager();
-            if(manager==null){
+            PackageManager manager = context.getPackageManager();
+            if (manager == null) {
                 return false;
 
-            }else {
+            } else {
                 packageInfo = manager.getPackageInfo(packageName, 0);
             }
         } catch (PackageManager.NameNotFoundException e) {
@@ -79,8 +80,32 @@ public class PackageUtil {
         }
     }
 
+    public static boolean needAppUpgrade(Context context, String packageName, String versions){
+        String versionName = getInstalledAppVersion(context, packageName);
+        if(!TextUtils.isEmpty(versionName)){
+            return !versionName.equals(versions);
+        }
+        return false;
+    }
 
-    public static  void  install(Context context, String path){
+    public static String getInstalledAppVersion(Context context, String packageName) {
+        PackageInfo packageInfo;
+        try {
+            PackageManager manager = context.getPackageManager();
+            if (manager != null) {
+                packageInfo = manager.getPackageInfo(packageName, 0);
+                if (packageInfo!=null){
+                    return packageInfo.versionName;
+                }
+            }
+            return "";
+        } catch (PackageManager.NameNotFoundException e) {
+            e.printStackTrace();
+            return "";
+        }
+    }
+
+    public static void install(Context context, String path) {
 
         File file = new File(path);
 
@@ -88,7 +113,7 @@ public class PackageUtil {
 
         Intent intent = new Intent(Intent.ACTION_VIEW);
         intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
-        try{
+        try {
             if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) { //判读版本是否在7.0以上
                 Uri apkUri = FileProvider.getUriForFile(context, SheepApp.getInstance().getPackageName() + ".fileprovider", file);
                 intent.addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION);
@@ -96,7 +121,7 @@ public class PackageUtil {
             } else {
                 intent.setDataAndType(Uri.fromFile(file), "application/vnd.android.package-archive");
             }
-        }catch (Exception e){
+        } catch (Exception e) {
             e.printStackTrace();
             intent.setDataAndType(Uri.fromFile(file), "application/vnd.android.package-archive");
         }
@@ -105,12 +130,11 @@ public class PackageUtil {
     }
 
 
-
     /*
-    * 安装
-    * install app
-    */
-    public static void installApk(final Context context,final String path) {
+     * 安装
+     * install app
+     */
+    public static void installApk(final Context context, final String path) {
         UMConfigUtils.onEvent(UMConfigUtils.Event.TASK_INSTALL_APP);
         install(context, path);
 //        if (Build.VERSION.SDK_INT >= 26) {//判读版本是否在8.0以上
@@ -139,8 +163,8 @@ public class PackageUtil {
 //        }
 
 
-
     }
+
     /*
      * 启动
      * install app
@@ -220,12 +244,12 @@ public class PackageUtil {
     /**
      * 通过包名、路径判断是否下载过
      */
-    public static String isExistsFile(String packName, String downloadUrl){
+    public static String isExistsFile(String packName, String downloadUrl) {
         ClassFileHelper.getInstance().createSDDirection();
         File mApkPath = new File(ClassFileHelper.DIR, packName + downloadUrl.hashCode() + ClassFileHelper.FILE_SUFFIX);
         if (!mApkPath.exists()) {
             return null;
-        }else{
+        } else {
             return mApkPath.getAbsolutePath();
         }
     }