diff --git a/app/build.gradle b/app/build.gradle index 3bb39b83d5..f1802522ef 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -6,6 +6,9 @@ task('processWithJavassist') << { .absolutePath + '/intermediates/classes/debug')//第二个参数是hackdex的class所在目录 } +/** + * 导出jar包 + */ task buildJar(dependsOn: ['compileReleaseJavaWithJavac'], type: Jar) { baseName = "news" @@ -74,7 +77,7 @@ android { // } /** - * 渠道打包 + * 多渠道打包 */ productFlavors { GH_100 {} diff --git a/app/src/main/java/com/gh/common/util/DownloadItemUtils.java b/app/src/main/java/com/gh/common/util/DownloadItemUtils.java index c8f3eb6192..9aaef3131a 100644 --- a/app/src/main/java/com/gh/common/util/DownloadItemUtils.java +++ b/app/src/main/java/com/gh/common/util/DownloadItemUtils.java @@ -17,7 +17,7 @@ import android.widget.Toast; import com.gh.common.constant.Config; import com.gh.common.constant.Constants; import com.gh.common.view.DownloadDialog; -import com.gh.download.DownloadEntry; +import com.gh.download.DownloadEntity; import com.gh.download.DownloadManager; import com.gh.download.DownloadStatus; import com.gh.gamecenter.DownloadManagerActivity; @@ -36,38 +36,38 @@ import java.util.concurrent.LinkedBlockingQueue; public class DownloadItemUtils { // 初始化gameMap - public static void initializeGameMap(Context context, ArrayMap> gameMap) { + public static void initializeGameMap(Context context, ArrayMap> gameMap) { gameMap.clear(); - List list = DownloadManager.getInstance(context).getAll(); + List list = DownloadManager.getInstance(context).getAll(); String name; for (int i = 0, size = list.size(); i < size; i++) { name = list.get(i).getName(); - ArrayMap map = gameMap.get(name); + ArrayMap map = gameMap.get(name); if (map == null) { map = new ArrayMap<>(); gameMap.put(name, map); } - map.put(list.get(i).getMeta().get("platform"), list.get(i)); + map.put(list.get(i).getPlatform(), list.get(i)); } } // 更新下载进度条 public static void processDate(Context context, GameEntity detailedEntity, - DownloadEntry downloadEntry, + DownloadEntity downloadEntity, RecyclerView.Adapter adapter, int index) { - LinkedBlockingQueue queue = DownloadManager.getInstance(context).getQueue(downloadEntry.getName()); + LinkedBlockingQueue queue = DownloadManager.getInstance(context).getQueue(downloadEntity.getName()); if (queue == null) { queue = new LinkedBlockingQueue<>(); - DownloadManager.getInstance(context).putQueue(downloadEntry.getName(), queue); + DownloadManager.getInstance(context).putQueue(downloadEntity.getName(), queue); } - String platform = downloadEntry.getMeta().get("platform"); - ArrayMap entryMap = detailedEntity.getEntryMap(); + String platform = downloadEntity.getPlatform(); + ArrayMap entryMap = detailedEntity.getEntryMap(); - DownloadStatus status = downloadEntry.getStatus(); + DownloadStatus status = downloadEntity.getStatus(); if (status.equals(DownloadStatus.pause) || status.equals(DownloadStatus.cancel) || status.equals(DownloadStatus.done)) { @@ -76,8 +76,8 @@ public class DownloadItemUtils { entryMap = new ArrayMap<>(); detailedEntity.setEntryMap(entryMap); } - entryMap.put(platform, downloadEntry); - if (!"pause".equals(DownloadManager.getInstance(context).getStatus(downloadEntry.getUrl()))) { + entryMap.put(platform, downloadEntity); + if (!"pause".equals(DownloadManager.getInstance(context).getStatus(downloadEntity.getUrl()))) { adapter.notifyItemChanged(index); } } else { @@ -85,7 +85,7 @@ public class DownloadItemUtils { queue.offer(platform); if (queue.size() == 2) { Message msg = Message.obtain(); - msg.obj = downloadEntry.getName(); + msg.obj = downloadEntity.getName(); msg.what = Constants.DOWNLOAD_ROLL; DownloadManager.getInstance(context).sendMessageDelayed(msg, 3000); } @@ -95,8 +95,8 @@ public class DownloadItemUtils { entryMap = new ArrayMap<>(); detailedEntity.setEntryMap(entryMap); } - entryMap.put(platform, downloadEntry); - if (!"pause".equals(DownloadManager.getInstance(context).getStatus(downloadEntry.getUrl()))) { + entryMap.put(platform, downloadEntity); + if (!"pause".equals(DownloadManager.getInstance(context).getStatus(downloadEntity.getUrl()))) { adapter.notifyItemChanged(index); } } @@ -114,19 +114,17 @@ public class DownloadItemUtils { GameEntity entity, boolean isShowPlatform) { - String pluginPlatform = entity.getPluginPlatform(); - - ArrayMap entryMap = entity.getEntryMap(); + ArrayMap entryMap = entity.getEntryMap(); if (entryMap != null && !entryMap.isEmpty()) { - DownloadEntry downloadEntry = entryMap.get(entity.getApk().get(0).getPlatform()); + DownloadEntity downloadEntity = entryMap.get(entity.getApk().get(0).getPlatform()); - if (downloadEntry != null && (pluginPlatform == null - || pluginPlatform.equals(PlatformUtils.getInstance(context) - .getPlatformName(downloadEntry.getMeta().get("platform"))))) { + if (downloadEntity != null && (!entity.isPluggable() + || entity.getApk().get(0).getPlatform().equals( + downloadEntity.getPlatform()))) { // 更改进度条和提示文本的状态 changeStatus(context, textView, game_progressbar, game_ll_info, download_speed, download_percentage, downloadBtn, - downloadEntry, isShowPlatform, true); + downloadEntity, isShowPlatform, true); return; } } @@ -136,7 +134,7 @@ public class DownloadItemUtils { game_ll_info.setVisibility(View.GONE); downloadBtn.setTextColor(Color.WHITE); - if (pluginPlatform != null) { + if (entity.isPluggable()) { downloadBtn.setText("插件化"); downloadBtn.setBackgroundResource(R.drawable.game_item_btn_plugin_style); } else if (PackageManager.isInstalled(entity.getApk().get(0).getPackageName())) { @@ -165,7 +163,7 @@ public class DownloadItemUtils { GameEntity entity, boolean isShowPlatform) { - ArrayMap entryMap = entity.getEntryMap(); + ArrayMap entryMap = entity.getEntryMap(); // 更新下载按钮状态 int doneCount = 0; // 下载完成数量 @@ -217,19 +215,19 @@ public class DownloadItemUtils { if (entryMap != null && !entryMap.isEmpty()) { - DownloadEntry downloadEntry; + DownloadEntity downloadEntity; LinkedBlockingQueue queue = DownloadManager.getInstance(context).getQueue(entity.getName()); if (queue != null && !queue.isEmpty()) { - downloadEntry = entryMap.get(queue.peek()); + downloadEntity = entryMap.get(queue.peek()); } else { - downloadEntry = entryMap.get(entryMap.keyAt(0)); + downloadEntity = entryMap.get(entryMap.keyAt(0)); } - if (downloadEntry != null) { + if (downloadEntity != null) { // 更改进度条和提示文本的状态 changeStatus(context, textView, game_progressbar, game_ll_info, download_speed, - download_percentage, downloadBtn, downloadEntry, isShowPlatform, false); + download_percentage, downloadBtn, downloadEntity, isShowPlatform, false); return; } } @@ -247,7 +245,7 @@ public class DownloadItemUtils { TextView download_speed, TextView download_percentage, TextView downloadBtn, - DownloadEntry downloadEntry, + DownloadEntity downloadEntity, boolean isShowPlatform, boolean isNormal) { textView.setVisibility(View.GONE); @@ -255,7 +253,7 @@ public class DownloadItemUtils { game_ll_info.setVisibility(View.VISIBLE); String platform = PlatformUtils.getInstance(context) - .getPlatformName(downloadEntry.getMeta().get("platform")); + .getPlatformName(downloadEntity.getPlatform()); int[] btn_colors = new int[] { Color.WHITE , context.getResources().getColor(R.color.theme) }; @@ -264,19 +262,19 @@ public class DownloadItemUtils { states[1] = new int[] {}; ColorStateList btn_sl = new ColorStateList(states, btn_colors); - DownloadStatus status = downloadEntry.getStatus(); + DownloadStatus status = downloadEntity.getStatus(); if (status.equals(DownloadStatus.downloading)) { - if (!"pause".equals(DownloadManager.getInstance(context).getStatus(downloadEntry.getUrl()))) { - game_progressbar.setProgress((int) (downloadEntry.getPercent() * 10)); + if (!"pause".equals(DownloadManager.getInstance(context).getStatus(downloadEntity.getUrl()))) { + game_progressbar.setProgress((int) (downloadEntity.getPercent() * 10)); if (isShowPlatform && platform != null) { download_speed.setText(String.format("%s - %s(剩%s)", platform, - SpeedUtils.getSpeed(downloadEntry.getSpeed()), - SpeedUtils.getRemainTime(downloadEntry.getSize(), downloadEntry.getProgress(), downloadEntry.getSpeed() * 1024))); + SpeedUtils.getSpeed(downloadEntity.getSpeed()), + SpeedUtils.getRemainTime(downloadEntity.getSize(), downloadEntity.getProgress(), downloadEntity.getSpeed() * 1024))); } else { - download_speed.setText(String.format("%s(剩%s)", SpeedUtils.getSpeed(downloadEntry.getSpeed()), - SpeedUtils.getRemainTime(downloadEntry.getSize(), downloadEntry.getProgress(), downloadEntry.getSpeed() * 1024))); + download_speed.setText(String.format("%s(剩%s)", SpeedUtils.getSpeed(downloadEntity.getSpeed()), + SpeedUtils.getRemainTime(downloadEntity.getSize(), downloadEntity.getProgress(), downloadEntity.getSpeed() * 1024))); } - download_percentage.setText(downloadEntry.getPercent() + "%"); + download_percentage.setText(downloadEntity.getPercent() + "%"); } if (isNormal) { @@ -285,13 +283,13 @@ public class DownloadItemUtils { downloadBtn.setTextColor(btn_sl); } } else if (status.equals(DownloadStatus.waiting)) { - game_progressbar.setProgress((int) (downloadEntry.getPercent() * 10)); + game_progressbar.setProgress((int) (downloadEntity.getPercent() * 10)); if (isShowPlatform && platform != null) { download_speed.setText(String.format("%s - 等待", platform)); } else { download_speed.setText("等待"); } - download_percentage.setText(downloadEntry.getPercent() + "%"); + download_percentage.setText(downloadEntity.getPercent() + "%"); if (isNormal) { downloadBtn.setText("下载中"); @@ -301,13 +299,13 @@ public class DownloadItemUtils { } else if (status.equals(DownloadStatus.pause) || status.equals(DownloadStatus.timeout) || status.equals(DownloadStatus.neterror)) { - game_progressbar.setProgress((int) (downloadEntry.getPercent() * 10)); + game_progressbar.setProgress((int) (downloadEntity.getPercent() * 10)); if (isShowPlatform && platform != null) { download_speed.setText(String.format("%s - 暂停", platform)); } else { download_speed.setText("暂停"); } - download_percentage.setText(downloadEntry.getPercent() + "%"); + download_percentage.setText(downloadEntity.getPercent() + "%"); if (isNormal) { downloadBtn.setText("下载中"); @@ -469,27 +467,25 @@ public class DownloadItemUtils { } //更新 - private static void update(Context context, GameEntity entity) { - ApkEntity apkEntity = entity.getApk().get(0); + private static void update(Context context, GameEntity gameEntity) { + ApkEntity apkEntity = gameEntity.getApk().get(0); //下载可更新游戏 Map kv = new HashMap<>(); kv.put("版本", apkEntity.getPlatform()); kv.put("状态", "下载开始"); - DataUtils.onEvent(context, "游戏更新", entity.getName(), kv); + DataUtils.onEvent(context, "游戏更新", gameEntity.getName(), kv); - DownloadEntry entry = new DownloadEntry(); - entry.setUrl(apkEntity.getUrl()); - entry.setName(entity.getName()); - entry.setPath(FileUtils.getDownloadPath(context, + DownloadEntity downloadEntity = new DownloadEntity(); + downloadEntity.setUrl(apkEntity.getUrl()); + downloadEntity.setName(gameEntity.getName()); + downloadEntity.setPath(FileUtils.getDownloadPath(context, MD5Utils.getContentMD5( - entity.getName() + "_" + System.currentTimeMillis()) + ".apk")); - HashMap meta = new HashMap<>(); - meta.put("ETag", apkEntity.getEtag()); - meta.put("icon", entity.getIcon()); - meta.put("platform", apkEntity.getPlatform()); - meta.put("isUpdate", "true"); - entry.setMeta(meta); - DownloadManager.getInstance(context).add(entry); + gameEntity.getName() + "_" + System.currentTimeMillis()) + ".apk")); + downloadEntity.setPlatform(apkEntity.getPlatform()); + downloadEntity.setIcon(gameEntity.getIcon()); + downloadEntity.setUpdate(true); + downloadEntity.setETag(apkEntity.getEtag()); + DownloadManager.getInstance(context).add(downloadEntity); } //下载 @@ -660,29 +656,27 @@ public class DownloadItemUtils { } } - private static void addDownloadEntry(Context context, GameEntity game, int position, String entrance) { + private static void addDownloadEntry(Context context, + GameEntity gameEntity, + int position, + String entrance) { - ApkEntity apkEntity = game.getApk().get(position); + ApkEntity apkEntity = gameEntity.getApk().get(position); - DownloadEntry entry = new DownloadEntry(); - entry.setUrl(apkEntity.getUrl()); - entry.setName(game.getName()); - entry.setPath(FileUtils.getDownloadPath(context, - MD5Utils.getContentMD5(game.getName() + "_" + System.currentTimeMillis()) + ".apk")); - HashMap meta = new HashMap<>(); - meta.put("ETag", apkEntity.getEtag()); - meta.put("icon", game.getIcon()); - meta.put("platform", apkEntity.getPlatform()); - meta.put("gameId", game.getId()); - meta.put("entrance", entrance); - meta.put("location", "游戏详情:" + game.getName()); - if (game.getPluginPlatform() != null) { - meta.put("PluginPlatform", game.getPluginPlatform()); - meta.put("isPlugin", "true"); - } - entry.setMeta(meta); + DownloadEntity downloadEntity = new DownloadEntity(); + downloadEntity.setUrl(apkEntity.getUrl()); + downloadEntity.setName(gameEntity.getName()); + downloadEntity.setPath(FileUtils.getDownloadPath(context, MD5Utils.getContentMD5( + gameEntity.getName() + "_" + System.currentTimeMillis()) + ".apk")); + downloadEntity.setIcon(gameEntity.getIcon()); + downloadEntity.setETag(apkEntity.getEtag()); + downloadEntity.setPlatform(apkEntity.getPlatform()); + downloadEntity.setGameId(gameEntity.getId()); + downloadEntity.setPluggable(gameEntity.isPluggable()); + downloadEntity.setEntrance(entrance); + downloadEntity.setLocation("游戏详情:" + gameEntity.getName()); - DownloadManager.getInstance(context).add(entry); + DownloadManager.getInstance(context).add(downloadEntity); } } diff --git a/app/src/main/java/com/gh/common/view/DownloadDialog.java b/app/src/main/java/com/gh/common/view/DownloadDialog.java index 99a56b25e7..a7cd1fcd21 100644 --- a/app/src/main/java/com/gh/common/view/DownloadDialog.java +++ b/app/src/main/java/com/gh/common/view/DownloadDialog.java @@ -43,7 +43,7 @@ import com.gh.common.util.PackageUtils; import com.gh.common.util.PlatformUtils; import com.gh.common.util.Utils; import com.gh.download.DataWatcher; -import com.gh.download.DownloadEntry; +import com.gh.download.DownloadEntity; import com.gh.download.DownloadManager; import com.gh.download.DownloadStatus; import com.gh.gamecenter.DownloadManagerActivity; @@ -99,12 +99,12 @@ public class DownloadDialog { private DataWatcher dataWatcher = new DataWatcher() { @Override - public void onDataChanged(DownloadEntry downloadEntry) { - if (downloadEntry.getName().equals(gameName) - && !"delete".equals(DownloadManager.getInstance(context).getStatus(downloadEntry.getUrl()))) { - entryMap.put(downloadEntry.getUrl(), downloadEntry); + public void onDataChanged(DownloadEntity downloadEntity) { + if (downloadEntity.getName().equals(gameName) + && !"delete".equals(DownloadManager.getInstance(context).getStatus(downloadEntity.getUrl()))) { + entryMap.put(downloadEntity.getUrl(), downloadEntity); - Integer location = locationMap.get(downloadEntry.getUrl()); + Integer location = locationMap.get(downloadEntity.getUrl()); if (location != null) { int position = (int) Math.ceil((location + 1) / (double) (row * column)); @@ -125,7 +125,7 @@ public class DownloadDialog { private PopupWindow popupWindow; private ArrayMap locationMap; - private ArrayMap entryMap; + private ArrayMap entryMap; private SparseArray adapterMap; private SparseArray collectionAdapterMap;//存储合集的adapter private ArrayMap urlMap; @@ -187,15 +187,15 @@ public class DownloadDialog { gameType = "plugin"; } - entryMap = new ArrayMap(); - List entries = DownloadManager.getInstance(context).getAll(); + entryMap = new ArrayMap<>(); + List entries = DownloadManager.getInstance(context).getAll(); for (int i = 0, size = entries.size(); i < size; i++) { if (entries.get(i).getName().equals(gameName)) { entryMap.put(entries.get(i).getUrl(), entries.get(i)); } } - gameApk = sortApk(new ArrayList(game.getApk())); + gameApk = sortApk(new ArrayList<>(game.getApk())); if (game.getCollection() != null){ mergeApkCollection(game); @@ -208,12 +208,12 @@ public class DownloadDialog { textView.setText(gameName); int count = gameApk.size(); - int vpHeight = 0; - if (count <= 3){ + int vpHeight; + if (count <= 3) { vpHeight = 80; - }else if (count <= 6){ + } else if (count <= 6) { vpHeight = 140; - }else { + } else { vpHeight = 200; } @@ -228,7 +228,7 @@ public class DownloadDialog { isLoadPlatform = false; - init(new ArrayList(gameApk)); + init(new ArrayList<>(gameApk)); viewPager.addOnPageChangeListener(new OnPageChangeListener() { @Override @@ -395,9 +395,9 @@ public class DownloadDialog { } } - locationMap = new ArrayMap(); - adapterMap = new SparseArray(); - urlMap = new ArrayMap(); + locationMap = new ArrayMap<>(); + adapterMap = new SparseArray<>(); + urlMap = new ArrayMap<>(); for (int i = 0, size = apkList.size(); i < size; i++) { locationMap.put(apkList.get(i).getUrl(), i); @@ -433,13 +433,13 @@ public class DownloadDialog { } private ArrayList sortApk(List apkList) { - DownloadEntry downloadEntry; - List doneList = new ArrayList(); - List updateList = new ArrayList(); - List installedList = new ArrayList(); - List pluginList = new ArrayList(); - List downloadList = new ArrayList(); - List noPicList = new ArrayList(); + DownloadEntity downloadEntity; + List doneList = new ArrayList<>(); + List updateList = new ArrayList<>(); + List installedList = new ArrayList<>(); + List pluginList = new ArrayList<>(); + List downloadList = new ArrayList<>(); + List noPicList = new ArrayList<>(); PackageManager packageManager = new PackageManager(context); for (int i = 0, size = apkList.size(); i < size; i++) { @@ -459,9 +459,9 @@ public class DownloadDialog { i--; } } else { - downloadEntry = entryMap.get(apkList.get(i).getUrl()); - if (downloadEntry != null) { - if (downloadEntry.getStatus().equals(DownloadStatus.done)) { + downloadEntity = entryMap.get(apkList.get(i).getUrl()); + if (downloadEntity != null) { + if (downloadEntity.getStatus().equals(DownloadStatus.done)) { doneList.add(apkList.remove(i)); } else { downloadList.add(apkList.remove(i)); @@ -484,7 +484,7 @@ public class DownloadDialog { } } } - ArrayList list = new ArrayList(); + ArrayList list = new ArrayList<>(); list.addAll(doneList); list.addAll(updateList); list.addAll(installedList); @@ -629,7 +629,7 @@ public class DownloadDialog { DialogUtils.showPluginDialog(context, new DialogUtils.ConfiremListener() { @Override public void onConfirem() { - Map kv6 = new HashMap(); + Map kv6 = new HashMap<>(); kv6.put("操作", "点击插件化安装完成"); DataUtils.onEvent(context, "插件化", gameName, kv6); @@ -715,7 +715,7 @@ public class DownloadDialog { //打开下载管理界面 context.startActivity(new Intent(context, DownloadManagerActivity.class)); } else if ("启动".equals(status)) { - Map kv = new HashMap(); + Map kv = new HashMap<>(); kv.put("版本", apkEntity.getPlatform()); DataUtils.onEvent(context, "游戏启动", gameName, kv); @@ -780,10 +780,10 @@ public class DownloadDialog { layerDrawable.setId(0, android.R.id.background); layerDrawable.setId(1, android.R.id.progress); viewHolder.download_item_progressbar.setProgressDrawable(layerDrawable); - DownloadEntry downloadEntry = DownloadManager.getInstance( + DownloadEntity downloadEntity = DownloadManager.getInstance( context).get(apkEntity.getUrl()); PackageManager mPackageManager = new PackageManager(context); - if (downloadEntry == null) { + if (downloadEntity == null) { viewHolder.download_item_progressbar.setProgress(1000); viewHolder.download_item_tv_status.setText("启动"); if (!"normal".equals(gameType) @@ -793,15 +793,15 @@ public class DownloadDialog { viewHolder.download_item_tv_status.setText("更新"); } } else { - viewHolder.download_item_progressbar.setProgress((int) (downloadEntry.getPercent() * 10)); - if (downloadEntry.getMeta().get("isPlugin") != null) { - if (downloadEntry.getStatus().equals(DownloadStatus.done)) { + viewHolder.download_item_progressbar.setProgress((int) (downloadEntity.getPercent() * 10)); + if (downloadEntity.isPluggable()) { + if (downloadEntity.getStatus().equals(DownloadStatus.done)) { viewHolder.download_item_tv_status.setText("安装插件"); } else { viewHolder.download_item_tv_status.setText("插件化下载中"); } - } else if (downloadEntry.getMeta().get("isUpdate") != null) { - if (downloadEntry.getStatus().equals(DownloadStatus.done)) { + } else if (downloadEntity.isUpdate()) { + if (downloadEntity.getStatus().equals(DownloadStatus.done)) { viewHolder.download_item_tv_status.setText("安装更新"); } else { viewHolder.download_item_tv_status.setText("更新下载中"); @@ -809,8 +809,8 @@ public class DownloadDialog { } } } else { - DownloadEntry downloadEntry = entryMap.get(apkEntity.getUrl()); - if (downloadEntry != null) { + DownloadEntity downloadEntity = entryMap.get(apkEntity.getUrl()); + if (downloadEntity != null) { viewHolder.download_item_iv_pic.setVisibility(View.GONE); viewHolder.download_item_tv_hint.setVisibility(View.GONE); viewHolder.download_item_progressbar.setVisibility(View.VISIBLE); @@ -839,9 +839,9 @@ public class DownloadDialog { layerDrawable.setId(0, android.R.id.background); layerDrawable.setId(1, android.R.id.progress); viewHolder.download_item_progressbar.setProgressDrawable(layerDrawable); - viewHolder.download_item_progressbar.setProgress((int) (downloadEntry.getPercent() * 10)); + viewHolder.download_item_progressbar.setProgress((int) (downloadEntity.getPercent() * 10)); - DownloadStatus status = downloadEntry.getStatus(); + DownloadStatus status = downloadEntity.getStatus(); if (status.equals(DownloadStatus.pause) || status.equals(DownloadStatus.timeout) || status.equals(DownloadStatus.neterror) @@ -850,7 +850,7 @@ public class DownloadDialog { viewHolder.download_item_tv_status.setText("下载中"); } else if (status.equals(DownloadStatus.done)) { EventBus.getDefault().post(new EBPutUrl(PackageUtils.getPackageNameByPath( - context, downloadEntry.getPath()), downloadEntry.getUrl())); + context, downloadEntity.getPath()), downloadEntity.getUrl())); viewHolder.download_item_tv_status.setText("安装"); } else if (status.equals(DownloadStatus.cancel) || status.equals(DownloadStatus.hijack)) { @@ -936,12 +936,12 @@ public class DownloadDialog { //安装游戏 private void install(ApkEntity apkEntity, int position) { - DownloadEntry downloadEntry = DownloadManager.getInstance( + DownloadEntity downloadEntity = DownloadManager.getInstance( context).get(apkEntity.getUrl()); - if (downloadEntry != null && downloadEntry.getMeta().get("isPlugin") != null) { - Map kv6 = new HashMap(); + if (downloadEntity != null && downloadEntity.isPluggable()) { + Map kv6 = new HashMap<>(); kv6.put("操作", "点击安装完成"); - DataUtils.onEvent(context, "插件化", downloadEntry.getName(), kv6); + DataUtils.onEvent(context, "插件化", downloadEntity.getName(), kv6); } final String path = entryMap.get(apkEntity.getUrl()).getPath(); @@ -969,73 +969,71 @@ public class DownloadDialog { //下载可更新游戏 private void update(ApkEntity apkEntity) { - Map kv = new HashMap(); + Map kv = new HashMap<>(); kv.put("版本", apkEntity.getPlatform()); kv.put("状态", "下载开始"); DataUtils.onEvent(context, "游戏更新", gameName, kv); - DownloadEntry entry = new DownloadEntry(); - entry.setUrl(apkEntity.getUrl()); - entry.setName(gameName); - entry.setPath(FileUtils.getDownloadPath(context, + DownloadEntity downloadEntity = new DownloadEntity(); + downloadEntity.setUrl(apkEntity.getUrl()); + downloadEntity.setName(gameName); + downloadEntity.setPath(FileUtils.getDownloadPath(context, MD5Utils.getContentMD5( gameName + "_" + System.currentTimeMillis()) + ".apk")); - HashMap meta = new HashMap(); - meta.put("ETag", apkEntity.getEtag()); - meta.put("icon", gameIcon); - meta.put("platform", apkEntity.getPlatform()); - meta.put("isUpdate", "true"); - entry.setMeta(meta); - DownloadManager.getInstance(context).add(entry); + downloadEntity.setETag(apkEntity.getEtag()); + downloadEntity.setIcon(gameIcon); + downloadEntity.setPlatform(apkEntity.getPlatform()); + downloadEntity.setUpdate(true); + DownloadManager.getInstance(context).add(downloadEntity); } //下载插件化游戏 private void plugin(ApkEntity apkEntity) { String msg = FileUtils.isCanDownload(apkEntity.getSize()); if (TextUtils.isEmpty(msg)) { - Map kv = new HashMap(); + Map kv = new HashMap<>(); kv.put("版本", apkEntity.getPlatform()); kv.put("状态", "下载开始"); DataUtils.onEvent(context, "游戏下载", gameName, kv); - Map kv2 = new HashMap(); + Map kv2 = new HashMap<>(); kv2.put("版本", apkEntity.getPlatform()); kv2.put("状态", "下载开始"); kv2.put("位置", entrance + "-开始"); DataUtils.onEvent(context, "游戏下载位置", gameName, kv2); - Map kv3 = new HashMap(); + Map kv3 = new HashMap<>(); kv3.put(entrance, "下载数"); kv3.put(entrance, "下载开始"); DataUtils.onEvent(context, "应用数据", gameName, kv3); if ("主页-最新插件".equals(entrance)) { - Map kv4 = new HashMap(); + Map kv4 = new HashMap<>(); kv4.put(gameName, "下载数"); DataUtils.onEvent(context, "主页数据", "最新插件", kv4); } else if ("主页-热门卡牌".equals(entrance)) { - Map kv4 = new HashMap(); + Map kv4 = new HashMap<>(); kv4.put(gameName, "下载数"); DataUtils.onEvent(context, "主页数据", "热门卡牌", kv4); } else if ("主页-新测卡牌".equals(entrance)) { - Map kv4 = new HashMap(); + Map kv4 = new HashMap<>(); kv4.put(gameName, "下载数"); DataUtils.onEvent(context, "主页数据", "新测卡牌", kv4); } if (entrance.contains("游戏详情")) { - Map kv5 = new HashMap(); + Map kv5 = new HashMap<>(); kv5.put("下载", "下载开始"); kv5.put("下载", apkEntity.getPlatform()); DataUtils.onEvent(context, "插件数据", gameName, kv5); } - Map kv6 = new HashMap(); + Map kv6 = new HashMap<>(); kv6.put("下载", "下载开始"); kv6.put("版本", apkEntity.getPlatform()); DataUtils.onEvent(context, "插件化", gameName, kv6); - Map map = new HashMap(); + Map map = new HashMap<>(); map.put("game", gameName); map.put("method", "插件化"); map.put("platform", PlatformUtils.getInstance(context) @@ -1047,29 +1045,23 @@ public class DownloadDialog { map.put("createdOn", System.currentTimeMillis() / 1000); DataCollectionManager.onEvent(context, "download", map); - DownloadEntry entry = new DownloadEntry(); + DownloadEntity downloadEntity = new DownloadEntity(); + downloadEntity.setUrl(apkEntity.getUrl()); + downloadEntity.setName(gameName); + downloadEntity.setPath(FileUtils.getDownloadPath(context, MD5Utils.getContentMD5( + gameName + "_" + System.currentTimeMillis()) + ".apk")); + downloadEntity.setETag(apkEntity.getEtag()); + downloadEntity.setIcon(gameIcon); + downloadEntity.setPlatform(apkEntity.getPlatform()); + downloadEntity.setPluggable(true); + downloadEntity.setPackageName(apkEntity.getPackageName()); + downloadEntity.setGameId(gameId); + downloadEntity.setEntrance(entrance); + downloadEntity.setLocation(mlocation); - entry.setUrl(apkEntity.getUrl()); - entry.setName(gameName); - entry.setPath(FileUtils.getDownloadPath(context, - MD5Utils.getContentMD5(gameName + "_" + System.currentTimeMillis()) + ".apk")); - HashMap meta = new HashMap(); - meta.put("ETag", apkEntity.getEtag()); - meta.put("icon", gameIcon); - meta.put("platform", apkEntity.getPlatform()); - meta.put("gameId", gameId); - meta.put("entrance", entrance); - meta.put("location", mlocation); - meta.put("isPlugin", "true"); - meta.put("package_name", apkEntity.getPackageName()); - meta.put("size", apkEntity.getSize()); - meta.put("version", apkEntity.getVersion()); - meta.put("gh_version", apkEntity.getGhVersion()); - entry.setMeta(meta); + DownloadManager.getInstance(context).add(downloadEntity); - DownloadManager.getInstance(context).add(entry); - - DownloadManager.getInstance(context).putStatus(entry.getUrl(), "downloading"); + DownloadManager.getInstance(context).putStatus(downloadEntity.getUrl(), "downloading"); GameUpdateEntity game = new GameUpdateEntity(); game.setId(gameId); @@ -1081,7 +1073,7 @@ public class DownloadDialog { game.setGhVersion(apkEntity.getGhVersion()); game.setUrl(apkEntity.getUrl()); game.setPlatform(apkEntity.getPlatform()); - game.setPlugin(true); + game.setPluggable(true); PackageManager.addUpdate(game); } else { @@ -1093,44 +1085,44 @@ public class DownloadDialog { public void addDownloadEntry(ApkEntity apkEntity, TextView download_item_tv_status) { String msg = FileUtils.isCanDownload(apkEntity.getSize()); if (TextUtils.isEmpty(msg)) { - Map kv = new HashMap(); + Map kv = new HashMap<>(); kv.put("版本", apkEntity.getPlatform()); kv.put("状态", "下载开始"); DataUtils.onEvent(context, "游戏下载", gameName, kv); - Map kv2 = new HashMap(); + Map kv2 = new HashMap<>(); kv2.put("版本", apkEntity.getPlatform()); kv2.put("状态", "下载开始"); kv2.put("位置", entrance + "-开始"); DataUtils.onEvent(context, "游戏下载位置", gameName, kv2); - Map kv3 = new HashMap(); + Map kv3 = new HashMap<>(); kv3.put(entrance, "下载数"); kv3.put(entrance, "下载开始"); DataUtils.onEvent(context, "应用数据", gameName, kv3); if ("主页-最新插件".equals(entrance)) { - Map kv4 = new HashMap(); + Map kv4 = new HashMap<>(); kv4.put(gameName, "下载数"); DataUtils.onEvent(context, "主页数据", "最新插件", kv4); } else if ("主页-热门卡牌".equals(entrance)) { - Map kv4 = new HashMap(); + Map kv4 = new HashMap<>(); kv4.put(gameName, "下载数"); DataUtils.onEvent(context, "主页数据", "热门卡牌", kv4); } else if ("主页-新测卡牌".equals(entrance)) { - Map kv4 = new HashMap(); + Map kv4 = new HashMap<>(); kv4.put(gameName, "下载数"); DataUtils.onEvent(context, "主页数据", "新测卡牌", kv4); } if (entrance.contains("游戏详情")) { - Map kv5 = new HashMap(); + Map kv5 = new HashMap<>(); kv5.put("下载", "下载量"); kv5.put("下载", apkEntity.getPlatform()); DataUtils.onEvent(context, "插件数据", gameName, kv5); } - Map map = new HashMap(); + Map map = new HashMap<>(); map.put("game", gameName); map.put("method", "正常"); map.put("platform", PlatformUtils.getInstance(context) @@ -1142,26 +1134,25 @@ public class DownloadDialog { map.put("createdOn", System.currentTimeMillis() / 1000); DataCollectionManager.onEvent(context, "download", map); - DownloadEntry entry = new DownloadEntry(); - - entry.setUrl(apkEntity.getUrl()); - entry.setName(gameName); - entry.setPath(FileUtils.getDownloadPath(context, - MD5Utils.getContentMD5(gameName + "_" + System.currentTimeMillis()) + ".apk")); - HashMap meta = new HashMap(); - meta.put("ETag", apkEntity.getEtag()); - meta.put("icon", gameIcon); - meta.put("platform", apkEntity.getPlatform()); - meta.put("gameId", gameId); + DownloadEntity downloadEntity = new DownloadEntity(); + downloadEntity.setUrl(apkEntity.getUrl()); + downloadEntity.setName(gameName); + downloadEntity.setPath(FileUtils.getDownloadPath(context, MD5Utils.getContentMD5( + gameName + "_" + System.currentTimeMillis()) + ".apk")); + downloadEntity.setETag(apkEntity.getEtag()); + downloadEntity.setIcon(gameIcon); + downloadEntity.setPlatform(apkEntity.getPlatform()); + downloadEntity.setGameId(gameId); + HashMap meta = new HashMap<>(); meta.put("entrance", entrance); meta.put("location", mlocation); - entry.setMeta(meta); + downloadEntity.setMeta(meta); - DownloadManager.getInstance(context).add(entry); + DownloadManager.getInstance(context).add(downloadEntity); download_item_tv_status.setText("0.0%"); - DownloadManager.getInstance(context).putStatus(entry.getUrl(), "downloading"); + DownloadManager.getInstance(context).putStatus(downloadEntity.getUrl(), "downloading"); } else { Toast.makeText(context, msg, Toast.LENGTH_SHORT).show(); } diff --git a/app/src/main/java/com/gh/download/DBHelper.java b/app/src/main/java/com/gh/download/DBHelper.java index a474d98f02..f7b293c0bd 100644 --- a/app/src/main/java/com/gh/download/DBHelper.java +++ b/app/src/main/java/com/gh/download/DBHelper.java @@ -17,7 +17,7 @@ public class DBHelper extends OrmLiteSqliteOpenHelper { /** * downloadDao ,每张表对应一个 */ - private Dao downloadDao; + private Dao downloadDao; private DBHelper(Context context) { super(context, DB_NAME, null, VERSION); @@ -27,7 +27,7 @@ public class DBHelper extends OrmLiteSqliteOpenHelper { public void onCreate(SQLiteDatabase database, ConnectionSource connectionSource) { try { Utils.log("ormlite_test", "onCreate ===================="); - TableUtils.createTable(connectionSource, DownloadEntry.class); + TableUtils.createTable(connectionSource, DownloadEntity.class); } catch (java.sql.SQLException e) { e.printStackTrace(); } @@ -39,7 +39,7 @@ public class DBHelper extends OrmLiteSqliteOpenHelper { int oldVersion, int newVersion) { try { - TableUtils.dropTable(connectionSource, DownloadEntry.class, true); + TableUtils.dropTable(connectionSource, DownloadEntity.class, true); onCreate(database, connectionSource); } catch (java.sql.SQLException e) { e.printStackTrace(); @@ -66,10 +66,10 @@ public class DBHelper extends OrmLiteSqliteOpenHelper { return mInstance; } - public Dao getDownloadDao() { + public Dao getDownloadDao() { try { if (downloadDao == null) { - downloadDao = getDao(DownloadEntry.class); + downloadDao = getDao(DownloadEntity.class); } } catch (java.sql.SQLException e) { e.printStackTrace(); diff --git a/app/src/main/java/com/gh/download/DataChanger.java b/app/src/main/java/com/gh/download/DataChanger.java index 1abafa0c44..f3749023c8 100644 --- a/app/src/main/java/com/gh/download/DataChanger.java +++ b/app/src/main/java/com/gh/download/DataChanger.java @@ -16,22 +16,22 @@ public class DataChanger extends Observable { } private HashMap mDownloadingTasks;//当前正在下载的任务队列 - private HashMap mDownloadEntries;//包含所有下载任务的任务队列 + private HashMap mDownloadEntries;//包含所有下载任务的任务队列 private DataChanger() { mDownloadingTasks = new HashMap(); - mDownloadEntries = new HashMap(); + mDownloadEntries = new HashMap(); } public HashMap getDownloadingTasks() { return mDownloadingTasks; } - public HashMap getDownloadEntries() { + public HashMap getDownloadEntries() { return mDownloadEntries; } - public void addToDownloadEntries(DownloadEntry entry) { + public void addToDownloadEntries(DownloadEntity entry) { mDownloadEntries.put(entry.getUrl(), entry); } @@ -39,7 +39,7 @@ public class DataChanger extends Observable { return mDownloadingTasks.size(); } - public synchronized void notifyDataChanged(DownloadEntry entry) { + public synchronized void notifyDataChanged(DownloadEntity entry) { if(entry != null){ if (mDownloadEntries.get(entry.getUrl()) != null) { mDownloadEntries.put(entry.getUrl(), entry); @@ -71,7 +71,7 @@ public class DataChanger extends Observable { } public void pauseDownloadEntries(String url) { - DownloadEntry entry = getDownloadEntries().get(url); + DownloadEntity entry = getDownloadEntries().get(url); if(entry != null){ entry.setStatus(DownloadStatus.pause); } diff --git a/app/src/main/java/com/gh/download/DataWatcher.java b/app/src/main/java/com/gh/download/DataWatcher.java index ff57f4082f..6d19970abf 100644 --- a/app/src/main/java/com/gh/download/DataWatcher.java +++ b/app/src/main/java/com/gh/download/DataWatcher.java @@ -8,14 +8,11 @@ public abstract class DataWatcher implements Observer{ @Override public void update(Observable observable, Object data) { -// onDataChanged(DataChanger.getInstance().getDownloadEntries()); - if (data != null && data instanceof DownloadEntry) { - onDataChanged((DownloadEntry) data); + if (data != null && data instanceof DownloadEntity) { + onDataChanged((DownloadEntity) data); } } -// public abstract void onDataChanged(HashMap downloadingEntries); - - public abstract void onDataChanged(DownloadEntry downloadEntry); + public abstract void onDataChanged(DownloadEntity downloadEntity); } diff --git a/app/src/main/java/com/gh/download/DownloadDao.java b/app/src/main/java/com/gh/download/DownloadDao.java index 181f7ae172..cea5a41443 100644 --- a/app/src/main/java/com/gh/download/DownloadDao.java +++ b/app/src/main/java/com/gh/download/DownloadDao.java @@ -9,7 +9,7 @@ import java.util.List; public class DownloadDao { - private static Dao downloadDaoOpe; + private static Dao downloadDaoOpe; private static DBHelper helper; private static DownloadDao mInstance; @@ -38,7 +38,7 @@ public class DownloadDao { return mInstance; } - public void newOrUpdate(DownloadEntry entry) { + public void newOrUpdate(DownloadEntity entry) { try { if (DownloadStatus.cancel.equals(entry.getStatus())) { downloadDaoOpe.delete(entry); @@ -50,7 +50,7 @@ public class DownloadDao { } } - public DownloadEntry get(String url) { + public DownloadEntity get(String url) { try { return downloadDaoOpe.queryForId(url); } catch (java.sql.SQLException e) { @@ -59,8 +59,8 @@ public class DownloadDao { return null; } - public List getAll() { - List list = null; + public List getAll() { + List list = null; try { list = downloadDaoOpe.queryForAll(); } catch (java.sql.SQLException e) { diff --git a/app/src/main/java/com/gh/download/DownloadEntity.java b/app/src/main/java/com/gh/download/DownloadEntity.java new file mode 100644 index 0000000000..d7c7ed8168 --- /dev/null +++ b/app/src/main/java/com/gh/download/DownloadEntity.java @@ -0,0 +1,267 @@ +package com.gh.download; + +import com.j256.ormlite.field.DataType; +import com.j256.ormlite.field.DatabaseField; +import com.j256.ormlite.table.DatabaseTable; + +import java.io.Serializable; +import java.util.HashMap; + +@DatabaseTable(tableName = "download") +public class DownloadEntity implements Serializable { + + /** + * + */ + private static final long serialVersionUID = 1L; + + @DatabaseField(id = true, columnName="url") + private String url; + + @DatabaseField(columnName="name") + private String name; + + @DatabaseField(columnName="status") + private DownloadStatus status; + + @DatabaseField(columnName="path") + private String path; + + @DatabaseField(columnName="progress") + private long progress; + + @DatabaseField(columnName="size") + private long size; + + @DatabaseField(columnName="percent") + private double percent; + + @DatabaseField(columnName="speed") + private long speed; + + @DatabaseField(columnName="meta", dataType=DataType.SERIALIZABLE) + private HashMap meta;//其他 + + public String getGameId() { + if (meta != null) { + return meta.get("gameId"); + } + return null; + } + + public void setGameId(String gameId) { + if (meta == null) { + meta = new HashMap<>(); + } + meta.put("gameId", gameId); + } + + public String getPackageName() { + if (meta != null) { + return meta.get("packageName"); + } + return null; + } + + public void setPackageName(String packageName) { + if (meta == null) { + meta = new HashMap<>(); + } + meta.put("packageName", packageName); + } + + public String getETag() { + if (meta != null) { + return meta.get("ETag"); + } + return null; + } + + public void setETag(String ETag) { + if (meta == null) { + meta = new HashMap<>(); + } + meta.put("ETag", ETag); + } + + public boolean isUpdate() { + if (meta != null) { + if ("true".equals(meta.get("isUpdate"))) { + return true; + } + } + return false; + } + + public void setUpdate(boolean update) { + if (meta == null) { + meta = new HashMap<>(); + } + meta.put("isUpdate", String.valueOf(update)); + } + + public boolean isPlugin() { + if (meta != null) { + if ("true".equals(meta.get("isPlugin"))) { + return true; + } + } + return false; + } + + public void setPlugin(boolean plugin) { + if (meta == null) { + meta = new HashMap<>(); + } + meta.put("isPlugin", String.valueOf(plugin)); + } + + public boolean isPluggable() { + if (meta != null) { + if ("true".equals(meta.get("isPluggable"))) { + return true; + } + } + return false; + } + + public void setPluggable(boolean pluggable) { + if (meta == null) { + meta = new HashMap<>(); + } + meta.put("isPluggable", String.valueOf(pluggable)); + } + + public String getPlatform() { + if (meta != null) { + return meta.get("platform"); + } + return null; + } + + public void setPlatform(String platform) { + if (meta == null) { + meta = new HashMap<>(); + } + meta.put("platform", platform); + } + + public String getIcon() { + if (meta != null) { + return meta.get("icon"); + } + return null; + } + + public void setIcon(String icon) { + if (meta == null) { + meta = new HashMap<>(); + } + meta.put("icon", icon); + } + + public String getEntrance() { + if (meta != null) { + return meta.get("entrance"); + } + return null; + } + + public void setEntrance(String entrance) { + if (meta == null) { + meta = new HashMap<>(); + } + meta.put("entrance", entrance); + } + + public String getLocation() { + if (meta != null) { + return meta.get("location"); + } + return null; + } + + public void setLocation(String location) { + if (meta == null) { + meta = new HashMap<>(); + } + meta.put("location", location); + } + + public long getSpeed() { + return speed; + } + + public void setSpeed(long speed) { + this.speed = speed; + } + + public HashMap getMeta() { + return meta; + } + + public void setMeta(HashMap meta) { + if (this.meta != null) { + this.meta.putAll(meta); + } else { + this.meta = meta; + } + } + + public double getPercent() { + return percent; + } + + public void setPercent(double percent) { + this.percent = percent; + } + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } + + public DownloadStatus getStatus() { + return status; + } + + public void setStatus(DownloadStatus status) { + this.status = status; + } + + public String getUrl() { + return url; + } + + public void setUrl(String url) { + this.url = url; + } + + public String getPath() { + return path; + } + + public void setPath(String path) { + this.path = path; + } + + public long getProgress() { + return progress; + } + + public void setProgress(long progress) { + this.progress = progress; + } + + public long getSize() { + return size; + } + + public void setSize(long size) { + this.size = size; + } + +} diff --git a/app/src/main/java/com/gh/download/DownloadEntry.java b/app/src/main/java/com/gh/download/DownloadEntry.java deleted file mode 100644 index e615f813ab..0000000000 --- a/app/src/main/java/com/gh/download/DownloadEntry.java +++ /dev/null @@ -1,132 +0,0 @@ -package com.gh.download; - -import com.j256.ormlite.field.DataType; -import com.j256.ormlite.field.DatabaseField; -import com.j256.ormlite.table.DatabaseTable; - -import java.io.Serializable; -import java.util.HashMap; - -@DatabaseTable(tableName = "download") -public class DownloadEntry implements Serializable { - - /** - * - */ - private static final long serialVersionUID = 1L; - - @DatabaseField(id = true, columnName="url") - private String url; - - @DatabaseField(columnName="name") - private String name; - - @DatabaseField(columnName="status") - private DownloadStatus status; - - @DatabaseField(columnName="path") - private String path; - - @DatabaseField(columnName="progress") - private long progress; - - @DatabaseField(columnName="size") - private long size; - - @DatabaseField(columnName="percent") - private double percent; - - @DatabaseField(columnName="speed") - private long speed; - - @DatabaseField(columnName="meta", dataType=DataType.SERIALIZABLE) - private HashMap meta;//其他 - - public long getSpeed() { - return speed; - } - - public void setSpeed(long speed) { - this.speed = speed; - } - - public HashMap getMeta() { - return meta; - } - - public void setMeta(HashMap meta) { - this.meta = meta; - } - - public double getPercent() { - return percent; - } - - public void setPercent(double percent) { - this.percent = percent; - } - - public String getName() { - return name; - } - - public void setName(String name) { - this.name = name; - } - - public DownloadStatus getStatus() { - return status; - } - - public void setStatus(DownloadStatus status) { - this.status = status; - } - - public String getUrl() { - return url; - } - - public void setUrl(String url) { - this.url = url; - } - - public String getPath() { - return path; - } - - public void setPath(String path) { - this.path = path; - } - - public long getProgress() { - return progress; - } - - public void setProgress(long progress) { - this.progress = progress; - } - - public long getSize() { - return size; - } - - public void setSize(long size) { - this.size = size; - } - - @Override - public String toString() { - return "DownloadEntry{" + - "url='" + url + '\'' + - ", name='" + name + '\'' + - ", status=" + status + - ", path='" + path + '\'' + - ", progress=" + progress + - ", size=" + size + - ", percent=" + percent + - ", speed=" + speed + - ", meta=" + meta + - '}'; - } - -} diff --git a/app/src/main/java/com/gh/download/DownloadManager.java b/app/src/main/java/com/gh/download/DownloadManager.java index 58bec9d44d..a8ab8fcd0a 100644 --- a/app/src/main/java/com/gh/download/DownloadManager.java +++ b/app/src/main/java/com/gh/download/DownloadManager.java @@ -25,7 +25,7 @@ public class DownloadManager { private ArrayMap lastTimeMap; private ArrayMap> platformMap; - private ArrayMap> gameMap; + private ArrayMap> gameMap; private ArrayMap statusMap; private DownloadManager(Context context) { @@ -87,20 +87,22 @@ public class DownloadManager { public void initGameMap() { gameMap.clear(); - List list = DownloadManager.getInstance(context).getAll(); - String name; - for (DownloadEntry downloadEntry : list) { - name = downloadEntry.getName(); - ArrayMap map = gameMap.get(name); - if (map == null) { - map = new ArrayMap<>(); - gameMap.put(name, map); + List list = DownloadManager.getInstance(context).getAll(); + if (list != null && list.size() != 0) { + String name; + for (DownloadEntity downloadEntity : list) { + name = downloadEntity.getName(); + ArrayMap map = gameMap.get(name); + if (map == null) { + map = new ArrayMap<>(); + gameMap.put(name, map); + } + map.put(downloadEntity.getPlatform(), downloadEntity); } - map.put(downloadEntry.getMeta().get("platform"), downloadEntry); } } - public ArrayMap getEntryMap(String name) { + public ArrayMap getEntryMap(String name) { return gameMap.get(name); } @@ -123,7 +125,7 @@ public class DownloadManager { return mInstance; } - private Intent getIntent(DownloadEntry entry, DownloadStatus status) { + private Intent getIntent(DownloadEntity entry, DownloadStatus status) { Intent service = new Intent(context, DownloadService.class); service.putExtra(Constants.KEY_DOWNLOAD_ENTRY, entry); service.putExtra(Constants.KEY_DOWNLOAD_ACTION, status.name()); @@ -136,7 +138,7 @@ public class DownloadManager { * @param url 下载任务的标识url */ private boolean checkDownloadEntryRecordValidate(String url) { - DownloadEntry entry = get(url); + DownloadEntity entry = get(url); if (entry != null && ((int)entry.getPercent()) != 0) { File file = new File(entry.getPath()); if (!file.exists()) { @@ -155,7 +157,7 @@ public class DownloadManager { * @return */ public boolean isFileCompleted(String url) { - DownloadEntry entry = get(url); + DownloadEntity entry = get(url); if (entry != null) { if (entry.getPercent() == 100) { @@ -180,7 +182,7 @@ public class DownloadManager { * * @param entry */ - public void add(DownloadEntry entry) { + public void add(DownloadEntity entry) { if (entry != null) { String url = entry.getUrl(); checkDownloadEntryRecordValidate(url); @@ -198,7 +200,7 @@ public class DownloadManager { */ public void pause(String url) { checkDownloadEntryRecordValidate(url); - DownloadEntry entry = DataChanger.getInstance().getDownloadEntries() + DownloadEntity entry = DataChanger.getInstance().getDownloadEntries() .get(url); if (entry != null) { context.startService(getIntent(entry, DownloadStatus.pause)); @@ -212,7 +214,7 @@ public class DownloadManager { * @param url */ public void resume(String url) { - DownloadEntry entry = get(url); + DownloadEntity entry = get(url); // 暂停任务后,把文件删除,然后点继续,文件不存在,需要重新加入下载队列进行下载 if (checkDownloadEntryRecordValidate(url)) { @@ -239,7 +241,7 @@ public class DownloadManager { } public void cancel(String url, boolean isDeleteFile) { - DownloadEntry entry = DownloadDao.getInstance(context).get(url); + DownloadEntity entry = DownloadDao.getInstance(context).get(url); if (entry != null) { if (isDeleteFile) { FileUtils.deleteFile(entry.getPath()); @@ -247,7 +249,7 @@ public class DownloadManager { DownloadDao.getInstance(context).delete(url); Utils.log(DownloadManager.class.getSimpleName(), "cancle==>file and record were deleted!"); } -// DownloadEntry entry = DataChanger.getInstance().getDownloadEntries().get(url); +// DownloadEntity entry = DataChanger.getInstance().getDownloadEntries().get(url); if (entry != null) { context.startService(getIntent(entry, DownloadStatus.cancel)); Utils.log(DownloadManager.class.getSimpleName(), "cancel"); @@ -258,7 +260,7 @@ public class DownloadManager { * 取消并删除所有下载任务(包括下载中、等待、暂停状态的任务) */ public void cancleAll() { - for (Entry entry : DataChanger.getInstance() + for (Entry entry : DataChanger.getInstance() .getDownloadEntries().entrySet()) { cancel(entry.getValue().getUrl(), true); } @@ -269,7 +271,7 @@ public class DownloadManager { * 开始所有下载任务 */ public void startAll() { - for (Entry entry : DataChanger.getInstance() + for (Entry entry : DataChanger.getInstance() .getDownloadEntries().entrySet()) { add(entry.getValue()); } @@ -280,7 +282,7 @@ public class DownloadManager { * 暂停所有正在下载的任务 */ public void pauseAll() { - for (Entry entry : DataChanger.getInstance().getDownloadEntries().entrySet()) { + for (Entry entry : DataChanger.getInstance().getDownloadEntries().entrySet()) { if (entry.getValue().getStatus() == DownloadStatus.downloading) { pause(entry.getValue().getUrl()); } @@ -294,7 +296,7 @@ public class DownloadManager { * @param url * @return null表示下载列表中不存在该任务,否则返回下载任务 */ - public DownloadEntry get(String url) { + public DownloadEntity get(String url) { return DownloadDao.getInstance(context).get(url); } @@ -303,7 +305,7 @@ public class DownloadManager { * * @return null表示没有下载任务 */ - public List getAll() { + public List getAll() { Utils.log(DownloadManager.class.getSimpleName(), "getAll"); return DownloadDao.getInstance(context).getAll(); } diff --git a/app/src/main/java/com/gh/download/DownloadService.java b/app/src/main/java/com/gh/download/DownloadService.java index 00f1030156..fcf70fabfb 100644 --- a/app/src/main/java/com/gh/download/DownloadService.java +++ b/app/src/main/java/com/gh/download/DownloadService.java @@ -32,7 +32,7 @@ public class DownloadService extends Service { if (intent != null && intent.getExtras() != null) { DownloadStatus status = DownloadStatus.valueOf(intent .getStringExtra(Constants.KEY_DOWNLOAD_ACTION)); - DownloadEntry entry = (DownloadEntry) intent + DownloadEntity entry = (DownloadEntity) intent .getSerializableExtra(Constants.KEY_DOWNLOAD_ENTRY); switch (status) { case add: @@ -56,12 +56,12 @@ public class DownloadService extends Service { return super.onStartCommand(intent, flags, startId); } - private synchronized void addDownload(DownloadEntry entry) { - DownloadEntry downloadEntry = DownloadDao.getInstance(this).get( + private synchronized void addDownload(DownloadEntity entry) { + DownloadEntity downloadEntity = DownloadDao.getInstance(this).get( entry.getUrl()); // 数据库下载历史中有这个任务的下载记录 - if (downloadEntry != null) { - entry = downloadEntry; + if (downloadEntity != null) { + entry = downloadEntity; } if (DataChanger.getInstance().getDownloadingSize() >= Constants.MAX_DOWNLOADING_SIZE) { @@ -79,7 +79,7 @@ public class DownloadService extends Service { EventBus.getDefault().post(new EBDownloadStatus("download")); } - private synchronized void startDownload(DownloadEntry entry) { + private synchronized void startDownload(DownloadEntity entry) { // 1.改任务队列的状态 entry.setStatus(DownloadStatus.downloading); DataChanger.getInstance().addToDownloadEntries(entry); @@ -94,12 +94,12 @@ public class DownloadService extends Service { Utils.log(DownloadService.class.getSimpleName(), "startDownload==>" + entry); } - private synchronized void resumeDownload(DownloadEntry entry) { + private synchronized void resumeDownload(DownloadEntity entry) { addDownload(entry); Utils.log(DownloadService.class.getSimpleName(), "resumeDownload==>" + entry); } - private synchronized void pauseDownload(DownloadEntry entry) { + private synchronized void pauseDownload(DownloadEntity entry) { if (entry != null) { DownloadTask task = DataChanger.getInstance().getDownloadingTasks() .get(entry.getUrl()); @@ -117,33 +117,30 @@ public class DownloadService extends Service { Utils.log(DownloadService.class.getSimpleName(), "pauseDownload==>" + entry); } - private synchronized void cancelDownload(DownloadEntry entry) { + private synchronized void cancelDownload(DownloadEntity downloadEntity) { DownloadTask task = DataChanger.getInstance().getDownloadingTasks() - .get(entry.getUrl()); + .get(downloadEntity.getUrl()); if (task != null) { task.cancel(); // 改任务队列的状态 - DataChanger.getInstance().removeDownloadingTask(entry.getUrl()); - DataChanger.getInstance().notifyDataChanged(entry); + DataChanger.getInstance().removeDownloadingTask(downloadEntity.getUrl()); + DataChanger.getInstance().notifyDataChanged(downloadEntity); } - if (entry != null) { - DataChanger.getInstance().removeDownloadEntry(entry.getUrl()); - DataChanger.getInstance().notifyDataChanged(entry); - } - Utils.log(DownloadService.class.getSimpleName(), "cancelDownload==>" + entry); - EBDownloadStatus status = new EBDownloadStatus("delete", entry.getName(), - entry.getMeta().get("platform"), entry.getUrl()); - String PluginPlatform = entry.getMeta().get("PluginPlatform"); - if (PluginPlatform != null) { - status.setPluginPlatform(PluginPlatform); + if (downloadEntity != null) { + DataChanger.getInstance().removeDownloadEntry(downloadEntity.getUrl()); + DataChanger.getInstance().notifyDataChanged(downloadEntity); } + Utils.log(DownloadService.class.getSimpleName(), "cancelDownload==>" + downloadEntity); + EBDownloadStatus status = new EBDownloadStatus("delete", downloadEntity.getName(), + downloadEntity.getPlatform(), downloadEntity.getUrl()); + status.setPluggable(downloadEntity.isPluggable()); EventBus.getDefault().post(status); } @SuppressLint("HandlerLeak") private Handler handler = new Handler() { public void handleMessage(android.os.Message msg) { - DownloadEntry entry = (DownloadEntry) msg.obj; + DownloadEntity entry = (DownloadEntity) msg.obj; DataChanger.getInstance().notifyDataChanged(entry); if (msg.what == 1 && msg.obj != null) { @@ -167,10 +164,10 @@ public class DownloadService extends Service { } }; - private synchronized void removeAndCheckNext(DownloadEntry obj) { + private synchronized void removeAndCheckNext(DownloadEntity obj) { DataChanger.getInstance().removeDownloadingTask(obj.getUrl()); DataChanger.getInstance().removeDownloadEntry(obj.getUrl()); - for (Entry entry : DataChanger.getInstance() + for (Entry entry : DataChanger.getInstance() .getDownloadEntries().entrySet()) { if (entry.getValue().getStatus() == DownloadStatus.waiting) { startDownload(entry.getValue()); diff --git a/app/src/main/java/com/gh/download/DownloadTask.java b/app/src/main/java/com/gh/download/DownloadTask.java index 27085f6f8a..d488fb7e03 100644 --- a/app/src/main/java/com/gh/download/DownloadTask.java +++ b/app/src/main/java/com/gh/download/DownloadTask.java @@ -15,7 +15,7 @@ import java.util.Map.Entry; public class DownloadTask implements DownloadListener { - private DownloadEntry entry; + private DownloadEntity entry; private Handler handler; private Context context; private DownloadThread downloadThread; @@ -28,14 +28,14 @@ public class DownloadTask implements DownloadListener { private long lastTime; private long intervalDownloadedSize; - public DownloadTask(Handler handler, final DownloadEntry entry, + public DownloadTask(Handler handler, final DownloadEntity entry, Context context) { this.entry = entry; this.handler = handler; this.context = context; - DownloadEntry historyEntry = DownloadDao.getInstance(context).get( + DownloadEntity historyEntry = DownloadDao.getInstance(context).get( entry.getUrl()); if (historyEntry != null && historyEntry.getSize() != 0) { // 历史下载任务,初始化数据 @@ -53,10 +53,10 @@ public class DownloadTask implements DownloadListener { public void start() { // 从下载历史里获取过去下载的进度信息 - DownloadEntry downloadEntry = DownloadDao.getInstance(context).get(entry.getUrl()); + DownloadEntity downloadEntity = DownloadDao.getInstance(context).get(entry.getUrl()); - if (downloadEntry != null) { - entry = downloadEntry; + if (downloadEntity != null) { + entry = downloadEntity; entry.setStatus(DownloadStatus.downloading); Utils.log(DownloadTask.class.getSimpleName(), "start==>" + "load from history:" + entry.getUrl() @@ -150,7 +150,7 @@ public class DownloadTask implements DownloadListener { } iterator.remove(); } - for (Entry entry : DataChanger.getInstance() + for (Entry entry : DataChanger.getInstance() .getDownloadEntries().entrySet()) { DataChanger.getInstance().pauseDownloadEntries(entry.getKey()); DownloadDao.getInstance(context).newOrUpdate(entry.getValue()); diff --git a/app/src/main/java/com/gh/download/DownloadThread.java b/app/src/main/java/com/gh/download/DownloadThread.java index d4ad0ef5cc..8b47465a42 100644 --- a/app/src/main/java/com/gh/download/DownloadThread.java +++ b/app/src/main/java/com/gh/download/DownloadThread.java @@ -19,13 +19,13 @@ public class DownloadThread extends Thread { private static final int CONNECT_TIME = 5000; private static final int READ_TIME = 5000; - private DownloadEntry entry; + private DownloadEntity entry; private DownloadListener listener; private DownloadStatus status; private Context context; public DownloadThread(Context context, - DownloadEntry entry, + DownloadEntity entry, DownloadListener listener) { this.entry = entry; this.listener = listener; @@ -90,7 +90,7 @@ public class DownloadThread extends Thread { if (!TextUtils.isEmpty(eTag) && eTag.startsWith("\"") && eTag.endsWith("\"")) { eTag = eTag.substring(1, eTag.length() - 1); } - String eTag2 = entry.getMeta().get("ETag"); + String eTag2 = entry.getETag(); if (!TextUtils.isEmpty(eTag2) && !eTag2.equals(eTag)) { //链接被劫持,抛出异常 Utils.log("eTag = " + eTag); diff --git a/app/src/main/java/com/gh/gamecenter/GameDetailActivity.java b/app/src/main/java/com/gh/gamecenter/GameDetailActivity.java index 02e4dc22aa..de0d74313e 100644 --- a/app/src/main/java/com/gh/gamecenter/GameDetailActivity.java +++ b/app/src/main/java/com/gh/gamecenter/GameDetailActivity.java @@ -28,7 +28,7 @@ import com.gh.common.util.PackageUtils; import com.gh.common.util.PlatformUtils; import com.gh.common.view.DownloadDialog; import com.gh.download.DataWatcher; -import com.gh.download.DownloadEntry; +import com.gh.download.DownloadEntity; import com.gh.download.DownloadManager; import com.gh.gamecenter.adapter.GameDetailAdapter; import com.gh.gamecenter.entity.ApkEntity; @@ -64,7 +64,7 @@ public class GameDetailActivity extends BaseActivity implements View.OnClickList private ImageView iv_share; private GameEntity gameEntity; - private DownloadEntry mDownloadEntry; + private DownloadEntity mDownloadEntity; private String entrance; private String gameId; @@ -73,13 +73,13 @@ public class GameDetailActivity extends BaseActivity implements View.OnClickList private DataWatcher dataWatcher = new DataWatcher() { @Override - public void onDataChanged(DownloadEntry downloadEntry) { + public void onDataChanged(DownloadEntity downloadEntity) { if (gameEntity != null && gameEntity.getApk().size() == 1) { String url = gameEntity.getApk().get(0).getUrl(); - if (url.equals(downloadEntry.getUrl())) { + if (url.equals(downloadEntity.getUrl())) { if (!"pause".equals(DownloadManager.getInstance(GameDetailActivity.this). - getStatus(downloadEntry.getUrl()))) { - mDownloadEntry = downloadEntry; + getStatus(downloadEntity.getUrl()))) { + mDownloadEntity = downloadEntity; invalidate(); } } @@ -235,7 +235,7 @@ public class GameDetailActivity extends BaseActivity implements View.OnClickList if ("下载中".equals(str)) { startActivity(new Intent(this, DownloadManagerActivity.class)); } else if ("安装".equals(str)) { - final String path = mDownloadEntry.getPath(); + final String path = mDownloadEntity.getPath(); PackageManager manager = new PackageManager(this); if (manager.launchSetup(path)) { startActivity(PackageUtils.getInstallIntent(path)); @@ -282,9 +282,9 @@ public class GameDetailActivity extends BaseActivity implements View.OnClickList } private void invalidate() { - gamedetail_progressbar.setProgress((int) (mDownloadEntry.getPercent() * 10)); + gamedetail_progressbar.setProgress((int) (mDownloadEntity.getPercent() * 10)); gamedetail_tv_per.setTextColor(0xFFFFFFFF); - switch (mDownloadEntry.getStatus()) { + switch (mDownloadEntity.getStatus()) { case downloading: case pause: case timeout: @@ -294,7 +294,7 @@ public class GameDetailActivity extends BaseActivity implements View.OnClickList break; case done: EventBus.getDefault().post(new EBPutUrl( - gameEntity.getApk().get(0).getPackageName(), mDownloadEntry.getUrl())); + gameEntity.getApk().get(0).getPackageName(), mDownloadEntity.getUrl())); gamedetail_tv_per.setText("安装"); break; case cancel: @@ -366,26 +366,20 @@ public class GameDetailActivity extends BaseActivity implements View.OnClickList System.currentTimeMillis() / 1000); DataCollectionManager.onEvent(this, "download", map); - DownloadEntry entry = new DownloadEntry(); + DownloadEntity downloadEntity = new DownloadEntity(); + downloadEntity.setUrl(apkEntity.getUrl()); + downloadEntity.setName(gameEntity.getName()); + downloadEntity.setPath(FileUtils.getDownloadPath(GameDetailActivity.this, + MD5Utils.getContentMD5(gameEntity.getName() + "_" + + System.currentTimeMillis()) + ".apk")); + downloadEntity.setPlatform(apkEntity.getPlatform()); + downloadEntity.setETag(apkEntity.getEtag()); + downloadEntity.setIcon(gameEntity.getIcon()); + downloadEntity.setGameId(gameEntity.getId()); + downloadEntity.setEntrance(entrance + "-游戏详情"); + downloadEntity.setLocation("游戏详情:" + gameEntity.getName()); - entry.setUrl(apkEntity.getUrl()); - entry.setName(gameEntity.getName()); - entry.setPath(FileUtils.getDownloadPath( - GameDetailActivity.this, - MD5Utils.getContentMD5(gameEntity.getName() - + "_" - + System.currentTimeMillis()) - + ".apk")); - HashMap meta = new HashMap<>(); - meta.put("ETag", apkEntity.getEtag()); - meta.put("icon", gameEntity.getIcon()); - meta.put("platform", apkEntity.getPlatform()); - meta.put("gameId", gameEntity.getId()); - meta.put("entrance", entrance + "-游戏详情"); - meta.put("location", "游戏详情:" + gameEntity.getName()); - entry.setMeta(meta); - - DownloadManager.getInstance(this).add(entry); + DownloadManager.getInstance(this).add(downloadEntity); gamedetail_tv_download.setVisibility(View.GONE); gamedetail_progressbar.setVisibility(View.VISIBLE); @@ -393,7 +387,7 @@ public class GameDetailActivity extends BaseActivity implements View.OnClickList gamedetail_progressbar.setProgress(0); gamedetail_tv_per.setText("0.0%"); - DownloadManager.getInstance(this).putStatus(entry.getUrl(), "downloading"); + DownloadManager.getInstance(this).putStatus(downloadEntity.getUrl(), "downloading"); } else { toast(msg); @@ -451,9 +445,9 @@ public class GameDetailActivity extends BaseActivity implements View.OnClickList } } else { String url = gameEntity.getApk().get(0).getUrl(); - for (DownloadEntry entry : DownloadManager.getInstance(this).getAll()) { + for (DownloadEntity entry : DownloadManager.getInstance(this).getAll()) { if (url.equals(entry.getUrl())) { - mDownloadEntry = entry; + mDownloadEntity = entry; gamedetail_tv_download.setVisibility(View.GONE); gamedetail_progressbar.setVisibility(View.VISIBLE); gamedetail_tv_per.setVisibility(View.VISIBLE); @@ -478,7 +472,7 @@ public class GameDetailActivity extends BaseActivity implements View.OnClickList gamedetail_tv_download = null; gamedetail_tv_per = null; gamedetail_progressbar = null; - mDownloadEntry = null; + mDownloadEntity = null; handler = null; iv_share = null; } diff --git a/app/src/main/java/com/gh/gamecenter/MainActivity.java b/app/src/main/java/com/gh/gamecenter/MainActivity.java index 12d96220b4..5f15bdbcb9 100644 --- a/app/src/main/java/com/gh/gamecenter/MainActivity.java +++ b/app/src/main/java/com/gh/gamecenter/MainActivity.java @@ -35,6 +35,7 @@ import com.android.volley.VolleyError; import com.gh.base.AppController; import com.gh.base.BaseFragmentActivity; import com.gh.common.constant.Config; +import com.gh.common.constant.Constants; import com.gh.common.util.DataUtils; import com.gh.common.util.DialogUtils; import com.gh.common.util.FileUtils; @@ -45,22 +46,27 @@ import com.gh.common.util.PlatformUtils; import com.gh.common.util.RandomUtils; import com.gh.common.util.RunningUtils; import com.gh.common.util.SpeedUtils; +import com.gh.common.util.TimestampUtils; import com.gh.common.util.Utils; import com.gh.download.DataWatcher; -import com.gh.download.DownloadEntry; +import com.gh.download.DownloadEntity; import com.gh.download.DownloadManager; import com.gh.download.DownloadStatus; import com.gh.gamecenter.db.info.ConcernInfo; import com.gh.gamecenter.db.info.GameInfo; import com.gh.gamecenter.db.info.SuspectedGameInfo; +import com.gh.gamecenter.entity.ApkEntity; import com.gh.gamecenter.entity.AppEntity; +import com.gh.gamecenter.entity.GameEntity; import com.gh.gamecenter.entity.GameUpdateEntity; +import com.gh.gamecenter.eventbus.EBDownloadStatus; import com.gh.gamecenter.eventbus.EBPackage; import com.gh.gamecenter.eventbus.EBPutUrl; import com.gh.gamecenter.eventbus.EBShowDialog; import com.gh.gamecenter.eventbus.EBSkip; import com.gh.gamecenter.eventbus.EBTopStatus; import com.gh.gamecenter.eventbus.EBUISwitch; +import com.gh.gamecenter.game.Game1Fragment; import com.gh.gamecenter.game.GameFragment; import com.gh.gamecenter.manager.ConcernManager; import com.gh.gamecenter.manager.DataCollectionManager; @@ -84,6 +90,8 @@ import java.io.IOException; import java.lang.reflect.Type; import java.text.SimpleDateFormat; import java.util.ArrayList; +import java.util.Collections; +import java.util.Comparator; import java.util.Date; import java.util.Enumeration; import java.util.HashMap; @@ -102,8 +110,7 @@ import de.greenrobot.event.EventBus; * @update 2015-8-11 * @des 项目的主Activity,3个Fragment都嵌入在这里。 */ -public class MainActivity extends BaseFragmentActivity implements - OnClickListener { +public class MainActivity extends BaseFragmentActivity implements OnClickListener { public static ArrayMap uninstallMap; public static String searchHint; @@ -134,127 +141,89 @@ public class MainActivity extends BaseFragmentActivity implements // 黄壮华 添加观察者 修改2015/8/15 private DataWatcher dataWatcher = new DataWatcher() { @Override - public void onDataChanged(DownloadEntry downloadEntry) { + public void onDataChanged(DownloadEntity downloadEntity) { // 链接被劫持 - if (DownloadStatus.hijack.equals(downloadEntry.getStatus())) { - // 删除任务 - DownloadManager.getInstance(getApplicationContext()).cancel(downloadEntry.getUrl()); - // 弹出提示框 - EventBus.getDefault().post(new EBShowDialog("hijack")); - //记录链接被劫持 - Map map = new HashMap<>(); - map.put("url", downloadEntry.getUrl()); - map.put("game", downloadEntry.getName()); - map.put("platform", downloadEntry.getMeta().get("platform")); - map.put("createdOn", System.currentTimeMillis() / 1000); - DataCollectionManager.onEvent(MainActivity.this, "hijack", map); + if (DownloadStatus.hijack.equals(downloadEntity.getStatus())) { + processHijack(downloadEntity); return; } - if (downloadEntry.getName().contains("光环助手") && isShowDownload) { - app_tv_speed.setText(String.format("%s(剩%s)", - SpeedUtils.getSpeed(downloadEntry.getSpeed()), - SpeedUtils.getRemainTime(downloadEntry.getSize(), - downloadEntry.getProgress(), downloadEntry.getSpeed() * 1024))); - app_pb_progress.setProgress((int) (downloadEntry - .getPercent() * 10)); - app_tv_percent.setText(downloadEntry.getPercent() + "%"); - if (DownloadStatus.done.equals(downloadEntry.getStatus())) { - DownloadManager.getInstance(getApplicationContext()) - .cancel(downloadEntry.getUrl(), false); - dialog.dismiss(); - isShowDownload = false; - } + if (downloadEntity.getName().contains("光环助手") && isShowDownload) { + processGhAssistDownload(downloadEntity); } - if (DownloadStatus.done.equals(downloadEntry.getStatus())) { - if (downloadEntry.getName().contains("光环助手")) { + if (DownloadStatus.done.equals(downloadEntity.getStatus())) { + if (downloadEntity.getName().contains("光环助手")) { DataUtils.onEvent(MainActivity.this, "软件更新", "下载完成"); - startActivity(PackageUtils - .getInstallIntent(downloadEntry.getPath())); + startActivity(PackageUtils.getInstallIntent(downloadEntity.getPath())); if (appEntity != null && appEntity.isIs_force()) { finish(); } } else { Map kv = new HashMap<>(); - kv.put("版本", downloadEntry.getMeta().get("platform")); + kv.put("版本", downloadEntity.getPlatform()); kv.put("状态", "下载完成"); - String isUpdate = downloadEntry.getMeta().get("isUpdate"); - String entrance = downloadEntry.getMeta().get("entrance"); - if (isUpdate != null && "true".equals(isUpdate)) { + String entrance = downloadEntity.getEntrance(); + if (downloadEntity.isUpdate()) { DataUtils.onEvent(MainActivity.this, "游戏更新", - downloadEntry.getName(), kv); + downloadEntity.getName(), kv); } else { DataUtils.onEvent(MainActivity.this, "游戏下载", - downloadEntry.getName(), kv); + downloadEntity.getName(), kv); Map kv2 = new HashMap<>(); - kv2.put("版本", - downloadEntry.getMeta().get("platform")); + kv2.put("版本", downloadEntity.getPlatform()); kv2.put("状态", "下载完成"); kv2.put("位置", entrance + "-完成"); DataUtils.onEvent(MainActivity.this, "游戏下载位置", - downloadEntry.getName(), kv2); + downloadEntity.getName(), kv2); } - if (downloadEntry.getMeta().get("isPlugin") != null) { + if (downloadEntity.isPluggable()) { Map kv6 = new HashMap<>(); kv6.put("下载", "下载完成"); - kv6.put("版本", - downloadEntry.getMeta().get("platform")); + kv6.put("版本", downloadEntity.getPlatform()); DataUtils.onEvent(MainActivity.this, "插件化", - downloadEntry.getName(), kv6); + downloadEntity.getName(), kv6); } Map map = new HashMap<>(); - map.put("game", downloadEntry.getName()); - if (downloadEntry.getMeta().get("isPlugin") != null) { + map.put("game", downloadEntity.getName()); + if (downloadEntity.isPluggable()) { map.put("method", "插件化"); } else { map.put("method", "正常"); } - map.put("platform", - PlatformUtils.getInstance( - getApplicationContext()) - .getPlatformName( - downloadEntry.getMeta() - .get("platform"))); + map.put("platform", PlatformUtils.getInstance(getApplicationContext()) + .getPlatformName(downloadEntity.getPlatform())); map.put("status", "完成"); - map.put("location", - downloadEntry.getMeta().get("location")); + map.put("location", downloadEntity.getLocation()); map.put("from", entrance); - map.put("network", NetworkUtils - .getConnectedType(MainActivity.this)); - map.put("createdOn", - System.currentTimeMillis() / 1000); + map.put("network", NetworkUtils.getConnectedType(MainActivity.this)); + map.put("createdOn", System.currentTimeMillis() / 1000); DataCollectionManager.onEvent(MainActivity.this, "download", map); entryMap.put(PackageUtils.getPackageNameByPath( getApplicationContext(), - downloadEntry.getPath()), downloadEntry + downloadEntity.getPath()), downloadEntity .getUrl()); - if (RunningUtils - .isApplicationBroughtToBackground(getApplicationContext())) { - if (downloadEntry.getMeta().get("isPlugin") != null) { - NotificationManager nManager = (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE); + if (RunningUtils.isApplicationBroughtToBackground(getApplicationContext())) { + if (downloadEntity.isPluggable()) { + NotificationManager nManager = (NotificationManager) getSystemService( + Context.NOTIFICATION_SERVICE); - String path = downloadEntry.getPath(); + String path = downloadEntity.getPath(); Intent intent = new Intent(); intent.putExtra("path", path); intent.setAction("com.gh.gamecenter.UNINSTALL"); PendingIntent pendingIntent = PendingIntent - .getBroadcast(MainActivity.this, 0, - intent, + .getBroadcast(MainActivity.this, 0, intent, PendingIntent.FLAG_ONE_SHOT); String platform = PlatformUtils - .getInstance( - getApplicationContext()) - .getPlatformName( - downloadEntry.getMeta() - .get("platform")); - String title = downloadEntry.getName() - + " - " + platform; + .getInstance(getApplicationContext()) + .getPlatformName(downloadEntity.getPlatform()); + String title = downloadEntity.getName() + " - " + platform; Notification notification = new NotificationCompat.Builder( MainActivity.this) @@ -271,46 +240,42 @@ public class MainActivity extends BaseFragmentActivity implements ((int) System.currentTimeMillis() / 1000), notification); - uninstallMap.put(PackageUtils - .getPackageNameByPath( - getApplicationContext(), - path), path); + uninstallMap.put(PackageUtils.getPackageNameByPath( + getApplicationContext(), path), path); } } else { String platform = PlatformUtils.getInstance( getApplicationContext()) .getPlatformName( - downloadEntry.getMeta().get( - "platform")); + downloadEntity.getPlatform()); if (platform != null) { - if (downloadEntry.getMeta().get("isPlugin") != null) { - EventBus.getDefault().post(new EBShowDialog("plugin", downloadEntry - .getPath())); + if (downloadEntity.isPluggable()) { + EventBus.getDefault().post(new EBShowDialog("plugin", + downloadEntity.getPath())); } else if (platform.equals("官方版")) { - toast(downloadEntry.getName() + " - 下载完成"); + toast(downloadEntity.getName() + " - 下载完成"); } else { - toast(downloadEntry.getName() - + " - " + platform + " - 下载完成"); + toast(downloadEntity.getName() + " - " + platform + " - 下载完成"); } } else { - toast(downloadEntry.getName() + " - 下载完成"); + toast(downloadEntity.getName() + " - 下载完成"); } - if (downloadEntry.getMeta().get("isPlugin") == null) { + if (downloadEntity.isPluggable()) { if (sp.getBoolean("autoinstall", true)) { - if (FileUtils.isEmptyFile(downloadEntry.getPath())) { + if (FileUtils.isEmptyFile(downloadEntity.getPath())) { toast("解析包错误"); } else { PackageManager manager = new PackageManager( getApplicationContext()); - if (manager.launchSetup(downloadEntry.getPath())) { + if (manager.launchSetup(downloadEntity.getPath())) { startActivity(PackageUtils - .getInstallIntent(downloadEntry + .getInstallIntent(downloadEntity .getPath())); } else { // 记录自动弹出卸载框 // 弹出卸载提示框 - EventBus.getDefault().post(new EBShowDialog("delete", downloadEntry - .getPath())); + EventBus.getDefault().post(new EBShowDialog("delete", + downloadEntity.getPath())); } } } @@ -319,22 +284,45 @@ public class MainActivity extends BaseFragmentActivity implements } // 统计下载完成 - uploadData(downloadEntry.getMeta().get("gameId"), - downloadEntry.getMeta().get("platform")); + uploadData(downloadEntity.getGameId(), downloadEntity.getPlatform()); } } else { Utils.log("It is already done!"); - DataUtils.onEvent( - MainActivity.this, - "多次弹框数据", - downloadEntry.getName() - + "-" - + downloadEntry.getMeta().get( - "platform")); + DataUtils.onEvent(MainActivity.this, "多次弹框数据", + downloadEntity.getName() + "-" + downloadEntity.getPlatform()); } } }; + private void processGhAssistDownload(DownloadEntity downloadEntity) { + app_tv_speed.setText(String.format("%s(剩%s)", + SpeedUtils.getSpeed(downloadEntity.getSpeed()), + SpeedUtils.getRemainTime(downloadEntity.getSize(), + downloadEntity.getProgress(), downloadEntity.getSpeed() * 1024))); + app_pb_progress.setProgress((int) (downloadEntity.getPercent() * 10)); + app_tv_percent.setText(downloadEntity.getPercent() + "%"); + if (DownloadStatus.done.equals(downloadEntity.getStatus())) { + DownloadManager.getInstance(getApplicationContext()) + .cancel(downloadEntity.getUrl(), false); + dialog.dismiss(); + isShowDownload = false; + } + } + + private void processHijack(DownloadEntity downloadEntity) { + // 删除任务 + DownloadManager.getInstance(getApplicationContext()).cancel(downloadEntity.getUrl()); + // 弹出提示框 + EventBus.getDefault().post(new EBShowDialog("hijack")); + //记录链接被劫持 + Map map = new HashMap<>(); + map.put("url", downloadEntity.getUrl()); + map.put("game", downloadEntity.getName()); + map.put("platform", downloadEntity.getPlatform()); + map.put("createdOn", System.currentTimeMillis() / 1000); + DataCollectionManager.onEvent(MainActivity.this, "hijack", map); + } + /* * 黄壮华 按连续按返回键两次才退出应用 */ @@ -367,6 +355,7 @@ public class MainActivity extends BaseFragmentActivity implements protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); + // 初始化gameMap DownloadManager.getInstance(this).initGameMap(); if (savedInstanceState != null) { @@ -411,6 +400,7 @@ public class MainActivity extends BaseFragmentActivity implements // 初始化PlatformUtils PlatformUtils.getInstance(getApplicationContext()); + // 添加观察者 DownloadManager.getInstance(this).addObserver(dataWatcher); handler.postDelayed(new Runnable() { @@ -433,12 +423,198 @@ public class MainActivity extends BaseFragmentActivity implements } }, 1000); - //检查是否存在更新的dex包 - checkHotfix(); +// //检查是否存在更新的dex包 +// checkHotfix(); + + // 检查游戏更新 + checkGameUpdate(); + + // 检查可插件化游戏 + checkGamePlugin(); Log.e("TD_CHANNEL_ID", (String) PackageUtils.getMetaData(this, getPackageName(), "TD_CHANNEL_ID")); } + private void checkGameUpdate() { + ArrayList list = new ArrayList<>(); + + ConcernManager concernManager = new ConcernManager(this); + List infos = concernManager.getInstalledGame(); + for (ConcernInfo info : infos) { + for (String packageName : info.getPackageNames().keySet()) { + if (info.getPackageNames().get(packageName)) { + list.add(packageName); + } + } + } + + Comparator comparator = new Comparator() { + @Override + public int compare(String lhs, String rhs) { + return lhs.compareTo(rhs); + } + }; + + Collections.sort(list, comparator); + + StringBuilder builder = new StringBuilder(); + String packages; + PackageManager.clearUpdateList(); + for (int i = 0, sizei = (list.size() / 10) + 1; i < sizei; i++) { + builder.delete(0, builder.length()); + for (int j = i * 10, sizej = (i + 1) * 10 > list.size() ? list + .size() : (i + 1) * 10; j < sizej; j++) { + builder.append(list.get(j)); + builder.append("-"); + } + if (builder.length() != 0) { + packages = builder.substring(0, builder.length() - 1); + JsonArrayExtendedRequest request = new JsonArrayExtendedRequest( + Config.HOST + "v1d45/support/package/update?package=" +// Config.HOST + "v1d45/support/package/latest?package=" + + packages, new Response.Listener() { + + @Override + public void onResponse(JSONArray response) { + + Utils.log("getUpdateList=" + response.toString()); + if (response.length() != 0) { + Gson gson = new Gson(); + Type listType = new TypeToken>() {}.getType(); + ArrayList games = gson.fromJson(response.toString(), listType); + GameUpdateEntity gameUpdateEntity; + for (int i = 0; i < games.size(); i++) { + gameUpdateEntity = games.get(i); + // 判断是否gh_version是否相同 + String gh_version = (String) PackageUtils + .getMetaData(MainActivity.this, gameUpdateEntity.getPackageName(), "gh_version"); + if (gh_version != null) { + gh_version = gh_version.substring(2); + // 判断gh_version是否相同 + if (gh_version.equals(gameUpdateEntity.getGhVersion())) { + // 判断version是否相同 + String version = PackageUtils + .getVersionByPackage(MainActivity.this, gameUpdateEntity.getPackageName()); + if (version != null && version.equals(gameUpdateEntity.getVersion())) { + // 版本相同,无需显示插件更新,继续查看是否有可更新的游戏包 + games.remove(i); + i--; + } + } + } else { + games.get(i).setPluggable(true); + } + } + PackageManager.addUpdateList(games); + + EventBus.getDefault().post(new EBDownloadStatus("update")); + } + } + }, new Response.ErrorListener() { + @Override + public void onErrorResponse(VolleyError error) { + + } + }); + AppController.addToRequestQueue(request, MainActivity.class); + } + } + } + + private int count; + + private void addCount() { + synchronized (MainActivity.class) { + count++; + } + } + + private void checkGamePlugin() { + ConcernManager concernManager = new ConcernManager(this); + List infos = concernManager.getInstalledGame(); + final int size = infos.size(); + final List list = new ArrayList<>(); + count = 0; + for (ConcernInfo info : infos) { + JsonObjectExtendedRequest request = new JsonObjectExtendedRequest( + TimestampUtils.addTimestamp(Config.HOST + "v1d45/game/" + + info.getId() + "/digest", Constants.GAME_CD), + new Response.Listener() { + @Override + public void onResponse(JSONObject response) { + Gson gson = new Gson(); + GameEntity gameEntity = gson.fromJson(response.toString(), GameEntity.class); + list.add(gameEntity); + addCount(); + if (count == size) { + processPluginData(list); + } + } + }, + new Response.ErrorListener() { + @Override + public void onErrorResponse(VolleyError error) { + addCount(); + if (count == size) { + processPluginData(list); + } + } + }); + AppController.addToRequestQueue(request, Game1Fragment.class); + } + } + + private void processPluginData(List list) { + if (list == null || list.isEmpty()) { + return; + } + ConcernManager concernManager = new ConcernManager(this); + PackageManager mPackageManager = new PackageManager(this); + List infos = concernManager.getInstalledGame(); + HashMap map; + GameEntity gameEntity; + for (ConcernInfo info : infos) { + for (int i = 0, size = list.size(); i < size; i++) { + gameEntity = list.get(i); + if (gameEntity.getId().equals(info.getId()) + && gameEntity.getTag() != null && gameEntity.getTag().size() != 0 + && gameEntity.getApk() != null) { + map = info.getPackageNames(); + for (String key : map.keySet()) { + if (map.get(key) && !mPackageManager.isSignature(key)) { + for (ApkEntity apkEntity : gameEntity.getApk()) { + if (apkEntity.getPackageName().equals(key)) { + GameUpdateEntity gameUpdateEntity = new GameUpdateEntity(); + gameUpdateEntity.setId(gameEntity.getId()); + gameUpdateEntity.setIcon(gameEntity.getIcon()); + gameUpdateEntity.setName(gameEntity.getName()); + gameUpdateEntity.setPackageName(apkEntity.getPackageName()); + gameUpdateEntity.setSize(apkEntity.getSize()); + gameUpdateEntity.setVersion(apkEntity.getVersion()); + gameUpdateEntity.setGhVersion(apkEntity.getGhVersion()); + gameUpdateEntity.setUrl(apkEntity.getUrl()); + gameUpdateEntity.setPlatform(apkEntity.getPlatform()); + gameUpdateEntity.setEtag(apkEntity.getEtag()); + gameUpdateEntity.setPluggable(true); + gameUpdateEntity.setTag(gameEntity.getTag()); + gameUpdateEntity.setBrief(gameEntity.getBrief()); + + PackageManager.addUpdate(gameUpdateEntity); + break; + } + } + GameManager manager = new GameManager(this); + manager.addOrUpdate(gameEntity.getApk(), gameEntity.getId(), + gameEntity.getName()); + } + } + break; + } + } + } + EventBus.getDefault().post(new EBDownloadStatus("plugin")); + } + @Override public void onWindowFocusChanged(boolean hasFocus) { super.onWindowFocusChanged(hasFocus); @@ -850,27 +1026,23 @@ public class MainActivity extends BaseFragmentActivity implements String path = FileUtils.getDownloadPath(MainActivity.this, "光环助手V" + appEntity.getVersion() + "_" + md5 + ".apk"); - File file = new File(path); - if (file.exists()) { file.delete(); } - DownloadEntry downloadEntry = new DownloadEntry(); - downloadEntry.setUrl(appEntity.getUrl()); - downloadEntry.setName("光环助手V" + appEntity.getVersion()); - downloadEntry.setPath(path); - HashMap meta = new HashMap<>(); - meta.put("platform", "官方版"); - downloadEntry.setMeta(meta); + DownloadEntity downloadEntity = new DownloadEntity(); + downloadEntity.setUrl(appEntity.getUrl()); + downloadEntity.setName("光环助手V" + appEntity.getVersion()); + downloadEntity.setPath(path); + downloadEntity.setPlatform("官方版"); DownloadManager.getInstance(getApplicationContext()).cancel( - downloadEntry.getUrl(), false); + downloadEntity.getUrl(), false); DownloadManager.getInstance(getApplicationContext()).pauseAll(); - DownloadManager.getInstance(getApplicationContext()).add(downloadEntry); + DownloadManager.getInstance(getApplicationContext()).add(downloadEntity); } // 获取META-INF中的plugin_update 文件,判断是否从游戏插件中下载的app,是则获取游戏id,启动游戏更新,下载该游戏 @@ -1107,13 +1279,12 @@ public class MainActivity extends BaseFragmentActivity implements if (url != null) { entryMap.remove(packageName); - DownloadEntry downloadEntry = DownloadManager.getInstance( + DownloadEntity downloadEntity = DownloadManager.getInstance( getApplicationContext()).get(url); - if (downloadEntry != null - && downloadEntry.getMeta().get("isPlugin") != null) { + if (downloadEntity != null && downloadEntity.isPluggable()) { Map kv6 = new HashMap<>(); kv6.put("安装或卸载", "安装完成"); - DataUtils.onEvent(this, "插件化", downloadEntry.getName(), kv6); + DataUtils.onEvent(this, "插件化", downloadEntity.getName(), kv6); } // 删除数据库 和 文件 @@ -1122,14 +1293,13 @@ public class MainActivity extends BaseFragmentActivity implements } } else if ("卸载".equals(busFour.getType())) { try { - for (DownloadEntry downloadEntry : DownloadManager.getInstance( + for (DownloadEntity downloadEntity : DownloadManager.getInstance( getApplicationContext()).getAll()) { - if (downloadEntry.getMeta().get("isPlugin") != null - && downloadEntry.getMeta().get("package_name") - .equals(packageName)) { + if (downloadEntity.isPluggable() + && packageName.equals(downloadEntity.getPackageName())) { Map kv6 = new HashMap<>(); kv6.put("安装或卸载", "卸载完成"); - DataUtils.onEvent(this, "插件化", downloadEntry.getName(), kv6); + DataUtils.onEvent(this, "插件化", downloadEntity.getName(), kv6); break; } } @@ -1181,7 +1351,7 @@ public class MainActivity extends BaseFragmentActivity implements int index = -1; for (int i = 0, size = list.size(); i < size; i++) { game = list.get(i); - if (!game.isPlugin()) { + if (!game.isPluggable()) { continue; } if (game.getPackageName().equals(packageName)) { diff --git a/app/src/main/java/com/gh/gamecenter/NewsDetailActivity.java b/app/src/main/java/com/gh/gamecenter/NewsDetailActivity.java index 60d9e501f7..211701c766 100644 --- a/app/src/main/java/com/gh/gamecenter/NewsDetailActivity.java +++ b/app/src/main/java/com/gh/gamecenter/NewsDetailActivity.java @@ -54,7 +54,7 @@ import com.gh.common.util.TimestampUtils; import com.gh.common.util.Utils; import com.gh.common.view.DownloadDialog; import com.gh.download.DataWatcher; -import com.gh.download.DownloadEntry; +import com.gh.download.DownloadEntity; import com.gh.download.DownloadManager; import com.gh.gamecenter.entity.ApkEntity; import com.gh.gamecenter.entity.GameEntity; @@ -104,7 +104,7 @@ public class NewsDetailActivity extends BaseActivity implements OnClickListener essaydetail_tv_per; private ProgressBar essaydetail_progressbar; private GameEntity gameEntity; - private DownloadEntry mDownloadEntry; + private DownloadEntity mDownloadEntity; private RecyclerView essaydetail_rv_show; private NewsAdapter adapter; private LinearLayoutManager linearLayoutManager; @@ -135,13 +135,13 @@ public class NewsDetailActivity extends BaseActivity implements OnClickListener private DataWatcher dataWatcher = new DataWatcher() { @Override - public void onDataChanged(DownloadEntry downloadEntry) { + public void onDataChanged(DownloadEntity downloadEntity) { if (gameEntity != null && gameEntity.getApk().size() == 1) { String url = gameEntity.getApk().get(0).getUrl(); - if (url.equals(downloadEntry.getUrl())) { + if (url.equals(downloadEntity.getUrl())) { if (!"pause".equals(DownloadManager.getInstance(NewsDetailActivity.this). - getStatus(downloadEntry.getUrl()))) { - mDownloadEntry = downloadEntry; + getStatus(downloadEntity.getUrl()))) { + mDownloadEntity = downloadEntity; invalidate(); } } @@ -427,7 +427,7 @@ public class NewsDetailActivity extends BaseActivity implements OnClickListener if ("下载中".equals(str)) { startActivity(new Intent(this, DownloadManagerActivity.class)); } else if ("安装".equals(str)) { - final String path = mDownloadEntry.getPath(); + final String path = mDownloadEntity.getPath(); PackageManager manager = new PackageManager( getApplicationContext()); if (manager.launchSetup(path)) { @@ -510,29 +510,22 @@ public class NewsDetailActivity extends BaseActivity implements OnClickListener System.currentTimeMillis() / 1000); DataCollectionManager.onEvent(this, "download", map); - DownloadEntry entry = new DownloadEntry(); - - entry.setUrl(apkEntity.getUrl()); - entry.setName(gameEntity.getName()); - entry.setPath(FileUtils.getDownloadPath( + DownloadEntity downloadEntity = new DownloadEntity(); + downloadEntity.setUrl(apkEntity.getUrl()); + downloadEntity.setName(gameEntity.getName()); + downloadEntity.setPath(FileUtils.getDownloadPath( NewsDetailActivity.this, - MD5Utils.getContentMD5(gameEntity - .getName() - + "_" - + System.currentTimeMillis()) - + ".apk")); - HashMap meta = new HashMap(); - meta.put("ETag", apkEntity.getEtag()); - meta.put("icon", gameEntity.getIcon()); - meta.put("platform", apkEntity.getPlatform()); - meta.put("gameId", gameEntity.getId()); - meta.put("entrance", entrance + "-文章详情"); - meta.put("location", - "新闻详情:" + entity.getTitle()); - entry.setMeta(meta); + MD5Utils.getContentMD5(gameEntity.getName() + "_" + + System.currentTimeMillis()) + ".apk")); + downloadEntity.setETag(apkEntity.getEtag()); + downloadEntity.setIcon(gameEntity.getIcon()); + downloadEntity.setPlatform(apkEntity.getPlatform()); + downloadEntity.setGameId(gameEntity.getId()); + downloadEntity.setEntrance(entrance + "-文章详情"); + downloadEntity.setLocation("新闻详情:" + entity.getTitle()); DownloadManager.getInstance( - getApplicationContext()).add(entry); + getApplicationContext()).add(downloadEntity); essaydetail_tv_download .setVisibility(View.GONE); @@ -542,7 +535,7 @@ public class NewsDetailActivity extends BaseActivity implements OnClickListener essaydetail_progressbar.setProgress(0); essaydetail_tv_per.setText("0.0%"); - DownloadManager.getInstance(NewsDetailActivity.this).putStatus(entry.getUrl(), "downloading"); + DownloadManager.getInstance(NewsDetailActivity.this).putStatus(downloadEntity.getUrl(), "downloading"); } else { toast(msg); @@ -746,9 +739,9 @@ public class NewsDetailActivity extends BaseActivity implements OnClickListener essaydetail_ll_bottom.setVisibility(View.VISIBLE); essaydetail_rv_show.setPadding(0, 0, 0, DisplayUtils.dip2px(getApplicationContext(), 44)); String url = gameEntity.getApk().get(0).getUrl(); - for (DownloadEntry entry : DownloadManager.getInstance(getApplicationContext()).getAll()) { + for (DownloadEntity entry : DownloadManager.getInstance(getApplicationContext()).getAll()) { if (url.equals(entry.getUrl())) { - mDownloadEntry = entry; + mDownloadEntity = entry; essaydetail_tv_download.setVisibility(View.GONE); essaydetail_progressbar.setVisibility(View.VISIBLE); essaydetail_tv_per.setVisibility(View.VISIBLE); @@ -1152,9 +1145,9 @@ public class NewsDetailActivity extends BaseActivity implements OnClickListener } private void invalidate() { - essaydetail_progressbar.setProgress((int) (mDownloadEntry.getPercent() * 10)); + essaydetail_progressbar.setProgress((int) (mDownloadEntity.getPercent() * 10)); essaydetail_tv_per.setTextColor(0xFFFFFFFF); - switch (mDownloadEntry.getStatus()) { + switch (mDownloadEntity.getStatus()) { case downloading: case pause: case timeout: @@ -1165,7 +1158,7 @@ public class NewsDetailActivity extends BaseActivity implements OnClickListener case done: EventBus.getDefault().post( new EBPutUrl(gameEntity.getApk().get(0).getPackageName(), - mDownloadEntry.getUrl())); + mDownloadEntity.getUrl())); essaydetail_tv_per.setText("安装"); break; case cancel: @@ -1199,9 +1192,9 @@ public class NewsDetailActivity extends BaseActivity implements OnClickListener } } else { String url = gameEntity.getApk().get(0).getUrl(); - for (DownloadEntry entry : DownloadManager.getInstance(getApplicationContext()).getAll()) { + for (DownloadEntity entry : DownloadManager.getInstance(getApplicationContext()).getAll()) { if (url.equals(entry.getUrl())) { - mDownloadEntry = entry; + mDownloadEntity = entry; essaydetail_tv_download.setVisibility(View.GONE); essaydetail_progressbar.setVisibility(View.VISIBLE); essaydetail_tv_per.setVisibility(View.VISIBLE); @@ -1292,7 +1285,7 @@ public class NewsDetailActivity extends BaseActivity implements OnClickListener essaydetail_tv_per = null; essaydetail_progressbar = null; gameEntity = null; - mDownloadEntry = null; + mDownloadEntity = null; essaydetail_rv_show = null; adapter = null; linearLayoutManager = null; diff --git a/app/src/main/java/com/gh/gamecenter/PluginActivity.java b/app/src/main/java/com/gh/gamecenter/PluginActivity.java index 3a563b832c..aac013a077 100644 --- a/app/src/main/java/com/gh/gamecenter/PluginActivity.java +++ b/app/src/main/java/com/gh/gamecenter/PluginActivity.java @@ -11,7 +11,7 @@ import com.gh.base.AppController; import com.gh.base.BaseActivity; import com.gh.common.util.DownloadItemUtils; import com.gh.download.DataWatcher; -import com.gh.download.DownloadEntry; +import com.gh.download.DownloadEntity; import com.gh.download.DownloadManager; import com.gh.gamecenter.adapter.PluginAdapter; import com.gh.gamecenter.entity.GameEntity; @@ -34,16 +34,16 @@ public class PluginActivity extends BaseActivity { private DataWatcher dataWatcher = new DataWatcher() { @Override - public void onDataChanged(DownloadEntry downloadEntry) { + public void onDataChanged(DownloadEntity downloadEntity) { //特殊 插件化update - if (downloadEntry.getMeta().get("PluginPlatform") != null) { + if (downloadEntity.isPluggable()) { Integer location = adapter.getLocationMap().get( - downloadEntry.getName() + " - " + downloadEntry.getMeta().get("PluginPlatform")); + downloadEntity.getName() + " - " + downloadEntity.getPlatform()); if (location != null) { GameEntity detailedEntity = adapter.getPluginList().get(location); if (detailedEntity != null) { DownloadItemUtils.processDate(PluginActivity.this, detailedEntity, - downloadEntry, adapter, location); + downloadEntity, adapter, location); } } } diff --git a/app/src/main/java/com/gh/gamecenter/SettingActivity.java b/app/src/main/java/com/gh/gamecenter/SettingActivity.java index 9f86ecc1d7..00a030cc83 100644 --- a/app/src/main/java/com/gh/gamecenter/SettingActivity.java +++ b/app/src/main/java/com/gh/gamecenter/SettingActivity.java @@ -32,7 +32,7 @@ import com.gh.common.util.PackageUtils; import com.gh.common.util.SpeedUtils; import com.gh.common.util.Utils; import com.gh.download.DataWatcher; -import com.gh.download.DownloadEntry; +import com.gh.download.DownloadEntity; import com.gh.download.DownloadManager; import com.gh.download.DownloadStatus; import com.gh.gamecenter.entity.AppEntity; @@ -46,7 +46,6 @@ import com.kyleduo.switchbutton.SwitchButton; import org.json.JSONObject; import java.io.File; -import java.util.HashMap; import de.greenrobot.event.EventBus; @@ -81,17 +80,17 @@ public class SettingActivity extends BaseActivity implements OnClickListener { private DataWatcher dataWatcher = new DataWatcher() { @Override - public void onDataChanged(DownloadEntry downloadEntry) { - if (downloadEntry.getName().contains("光环助手") && isShowDownload) { + public void onDataChanged(DownloadEntity downloadEntity) { + if (downloadEntity.getName().contains("光环助手") && isShowDownload) { app_tv_speed.setText(String.format("%s(剩%s)", - SpeedUtils.getSpeed(downloadEntry.getSpeed()), - SpeedUtils.getRemainTime(downloadEntry.getSize(), downloadEntry.getProgress(), - downloadEntry.getSpeed() * 1024))); - app_pb_progress.setProgress((int) (downloadEntry.getPercent() * 10)); - app_tv_percent.setText(downloadEntry.getPercent() + "%"); - if (DownloadStatus.done.equals(downloadEntry.getStatus())) { + SpeedUtils.getSpeed(downloadEntity.getSpeed()), + SpeedUtils.getRemainTime(downloadEntity.getSize(), downloadEntity.getProgress(), + downloadEntity.getSpeed() * 1024))); + app_pb_progress.setProgress((int) (downloadEntity.getPercent() * 10)); + app_tv_percent.setText(downloadEntity.getPercent() + "%"); + if (DownloadStatus.done.equals(downloadEntity.getStatus())) { DownloadManager.getInstance(getApplicationContext()) - .cancel(downloadEntry.getUrl(), false); + .cancel(downloadEntity.getUrl(), false); if (appEntity != null && appEntity.isIs_force()) { AppController.getInstance().finishActivity(); } else { @@ -530,20 +529,18 @@ public class SettingActivity extends BaseActivity implements OnClickListener { file.delete(); } - DownloadEntry downloadEntry = new DownloadEntry(); - downloadEntry.setUrl(appEntity.getUrl()); - downloadEntry.setName("光环助手V" + appEntity.getVersion()); - downloadEntry.setPath(path); - HashMap meta = new HashMap(); - meta.put("platform", "官方版"); - downloadEntry.setMeta(meta); + DownloadEntity downloadEntity = new DownloadEntity(); + downloadEntity.setUrl(appEntity.getUrl()); + downloadEntity.setName("光环助手V" + appEntity.getVersion()); + downloadEntity.setPath(path); + downloadEntity.setPlatform("官方版"); DownloadManager.getInstance(getApplicationContext()).cancel( - downloadEntry.getUrl(), false); + downloadEntity.getUrl(), false); DownloadManager.getInstance(getApplicationContext()).pauseAll(); - DownloadManager.getInstance(getApplicationContext()).add(downloadEntry); + DownloadManager.getInstance(getApplicationContext()).add(downloadEntity); } @Override diff --git a/app/src/main/java/com/gh/gamecenter/SplashScreenActivity.java b/app/src/main/java/com/gh/gamecenter/SplashScreenActivity.java index 11b682b8b4..8631e15322 100644 --- a/app/src/main/java/com/gh/gamecenter/SplashScreenActivity.java +++ b/app/src/main/java/com/gh/gamecenter/SplashScreenActivity.java @@ -34,7 +34,6 @@ import com.gh.gamecenter.db.info.GameInfo; import com.gh.gamecenter.entity.ApkEntity; import com.gh.gamecenter.entity.GameDigestEntity; import com.gh.gamecenter.entity.GameEntity; -import com.gh.gamecenter.entity.GameUpdateEntity; import com.gh.gamecenter.manager.ConcernManager; import com.gh.gamecenter.manager.DataCollectionManager; import com.gh.gamecenter.manager.FilterManager; @@ -43,7 +42,6 @@ import com.gh.gamecenter.manager.SuspectedGameManager; import com.gh.gamecenter.volley.extended.JsonArrayExtendedRequest; import com.gh.gamecenter.volley.extended.JsonObjectExtendedRequest; import com.google.gson.Gson; -import com.google.gson.reflect.TypeToken; import org.json.JSONArray; import org.json.JSONException; @@ -53,11 +51,8 @@ import java.io.BufferedReader; import java.io.File; import java.io.IOException; import java.io.InputStreamReader; -import java.lang.reflect.Type; import java.text.SimpleDateFormat; import java.util.ArrayList; -import java.util.Collections; -import java.util.Comparator; import java.util.Date; import java.util.HashMap; import java.util.HashSet; @@ -402,18 +397,15 @@ public class SplashScreenActivity extends BaseActivity { } } - private void processingInstalledData(List data, - List useParams) { - List list = new ArrayList<>(); + private void processingInstalledData(List data, List useParams) { Gson gson = new Gson(); for (int i = 0, size = data.size(); i < size; i++) { GameDigestEntity gameDigestEntity = gson.fromJson(data.get(i) .toString(), GameDigestEntity.class); - GameInfo gameEntity = new GameInfo(); - gameEntity.setId(gameDigestEntity.getId()); - gameEntity.setPackageName(useParams.get(i)); - concernManager.updateByEntity(gameEntity); - list.add(useParams.get(i)); + GameInfo gameInfo = new GameInfo(); + gameInfo.setId(gameDigestEntity.getId()); + gameInfo.setPackageName(useParams.get(i)); + concernManager.updateByEntity(gameInfo); } // 移除疑似游戏数据库中所有数据 @@ -421,85 +413,9 @@ public class SplashScreenActivity extends BaseActivity { getApplicationContext()); suspectedGameManager.deleteAll(); - getUpdateListFromServer(list); - updateConcern(); } - private void getUpdateListFromServer(List list) { - - Comparator comparator = new Comparator() { - @Override - public int compare(String lhs, String rhs) { - return lhs.compareTo(rhs); - } - }; - - Collections.sort(list, comparator); - - StringBuilder builder = new StringBuilder(); - String packages; - PackageManager.clearUpdateList(); - for (int i = 0, sizei = (list.size() / 10) + 1; i < sizei; i++) { - builder.delete(0, builder.length()); - for (int j = i * 10, sizej = (i + 1) * 10 > list.size() ? list - .size() : (i + 1) * 10; j < sizej; j++) { - builder.append(list.get(j)); - builder.append("-"); - } - if (builder.length() != 0) { - packages = builder.substring(0, builder.length() - 1); - JsonArrayExtendedRequest request = new JsonArrayExtendedRequest( - Config.HOST + "v1d45/support/package/update?package=" -// Config.HOST + "v1d45/support/package/latest?package=" - + packages, new Response.Listener() { - - @Override - public void onResponse(JSONArray response) { - - Utils.log("getUpdateList=" + response.toString()); - if (response.length() != 0) { - Gson gson = new Gson(); - Type listType = new TypeToken>() {}.getType(); - ArrayList games = gson.fromJson(response.toString(), listType); - GameUpdateEntity gameUpdateEntity; - for (int i = 0; i < games.size(); i++) { - gameUpdateEntity = games.get(i); - // 判断是否gh_version是否相同 - String gh_version = (String) PackageUtils - .getMetaData(SplashScreenActivity.this, gameUpdateEntity.getPackageName(), "gh_version"); - if (gh_version != null) { - gh_version = gh_version.substring(2); - // 判断gh_version是否相同 - if (gh_version.equals(gameUpdateEntity.getGhVersion())) { - // 判断version是否相同 - String version = PackageUtils - .getVersionByPackage(SplashScreenActivity.this, gameUpdateEntity.getPackageName()); - if (version != null && version.equals(gameUpdateEntity.getVersion())) { - // 版本相同,无需显示插件更新,继续查看是否有可更新的游戏包 - games.remove(i); - i--; - } - } - } else { - games.get(i).setPlugin(true); - } - } - PackageManager.addUpdateList(games); - } - } - }, new Response.ErrorListener() { - @Override - public void onErrorResponse(VolleyError error) { - - } - }); - AppController.addToRequestQueue(request, - SplashScreenActivity.class); - } - } - } - private int cCount; private void addConcernCount() { diff --git a/app/src/main/java/com/gh/gamecenter/SubjectActivity.java b/app/src/main/java/com/gh/gamecenter/SubjectActivity.java index 679c7d78b9..b568f84fc6 100644 --- a/app/src/main/java/com/gh/gamecenter/SubjectActivity.java +++ b/app/src/main/java/com/gh/gamecenter/SubjectActivity.java @@ -12,7 +12,7 @@ import com.gh.base.AppController; import com.gh.base.BaseActivity; import com.gh.common.util.DownloadItemUtils; import com.gh.download.DataWatcher; -import com.gh.download.DownloadEntry; +import com.gh.download.DownloadEntity; import com.gh.download.DownloadManager; import com.gh.gamecenter.adapter.SubjectAdapter; import com.gh.gamecenter.entity.ApkEntity; @@ -38,12 +38,12 @@ public class SubjectActivity extends BaseActivity { // 黄壮华 添加观察者 修改2015/8/15 private DataWatcher dataWatcher = new DataWatcher() { @Override - public void onDataChanged(DownloadEntry downloadEntry) { - Integer location = adapter.getLocationMap().get(downloadEntry.getName()); + public void onDataChanged(DownloadEntity downloadEntity) { + Integer location = adapter.getLocationMap().get(downloadEntity.getName()); if (location != null) { GameEntity detailedEntity = adapter.getList().get(location); if (detailedEntity != null) { - DownloadItemUtils.processDate(SubjectActivity.this, detailedEntity, downloadEntry, + DownloadItemUtils.processDate(SubjectActivity.this, detailedEntity, downloadEntity, adapter, location); } } diff --git a/app/src/main/java/com/gh/gamecenter/adapter/PluginAdapter.java b/app/src/main/java/com/gh/gamecenter/adapter/PluginAdapter.java index e21b5dc5a4..404e037fe8 100644 --- a/app/src/main/java/com/gh/gamecenter/adapter/PluginAdapter.java +++ b/app/src/main/java/com/gh/gamecenter/adapter/PluginAdapter.java @@ -19,7 +19,6 @@ import com.gh.common.util.DisplayUtils; import com.gh.common.util.DownloadItemUtils; import com.gh.common.util.GameViewUtils; import com.gh.common.util.ImageUtils; -import com.gh.common.util.PlatformUtils; import com.gh.common.util.TimestampUtils; import com.gh.common.view.CardLinearLayout; import com.gh.download.DownloadManager; @@ -156,8 +155,7 @@ public class PluginAdapter extends RecyclerView.Adapter for (ApkEntity apkEntity : gameEntity.getApk()) { if (apkEntity.getPackageName().equals(key)) { GameEntity entity = gameEntity.clone(); - entity.setPluginPlatform( - PlatformUtils.getInstance(context).getPlatformName(apkEntity.getPlatform())); + entity.setPluggable(true); ArrayList apkList = new ArrayList<>(); apkList.add(apkEntity); entity.setApk(apkList); @@ -186,9 +184,9 @@ public class PluginAdapter extends RecyclerView.Adapter private void initLocationMap() { for (int i = 0; i < pluginList.size(); i++) { GameEntity gameEntity = pluginList.get(i); - locationMap.put(gameEntity.getName() + " - " + gameEntity.getPluginPlatform(), i); + locationMap.put(gameEntity.getName() + " - " + gameEntity.getApk().get(0).getPlatform(), i); for (ApkEntity apkEntity : gameEntity.getApk()) { - nameMap.put(apkEntity.getPackageName(), gameEntity.getName() + " - " + gameEntity.getPluginPlatform()); + nameMap.put(apkEntity.getPackageName(), gameEntity.getName() + " - " + gameEntity.getApk().get(0).getPlatform()); } } } @@ -224,8 +222,8 @@ public class PluginAdapter extends RecyclerView.Adapter viewHolder.home1_game_order.setVisibility(View.GONE); ImageUtils.getInstance(context).display(entity.getIcon(), viewHolder.gameThumb); - if (entity.getPluginPlatform() != null) { - viewHolder.gameNameAndSize.setText(entity.getName() + " - " + entity.getPluginPlatform()); + if (entity.isPluggable()) { + viewHolder.gameNameAndSize.setText(entity.getName() + " - " + entity.getApk().get(0).getPlatform()); } else { viewHolder.gameNameAndSize.setText(entity.getName()); } diff --git a/app/src/main/java/com/gh/gamecenter/download/GameDownLoadFragment.java b/app/src/main/java/com/gh/gamecenter/download/GameDownLoadFragment.java index 8bd69b18f3..f8a785f9ac 100644 --- a/app/src/main/java/com/gh/gamecenter/download/GameDownLoadFragment.java +++ b/app/src/main/java/com/gh/gamecenter/download/GameDownLoadFragment.java @@ -18,7 +18,7 @@ import android.widget.TextView; import com.gh.common.constant.Constants; import com.gh.common.util.PackageUtils; import com.gh.download.DataWatcher; -import com.gh.download.DownloadEntry; +import com.gh.download.DownloadEntity; import com.gh.download.DownloadManager; import com.gh.download.DownloadStatus; import com.gh.gamecenter.R; @@ -60,12 +60,12 @@ public class GameDownLoadFragment extends Fragment implements View.OnClickListen private DataWatcher dataWatcher = new DataWatcher() { @Override - public void onDataChanged(DownloadEntry downloadEntry) { - Integer location = locationMap.get(downloadEntry.getUrl()); + public void onDataChanged(DownloadEntity downloadEntity) { + Integer location = locationMap.get(downloadEntity.getUrl()); if (location != null) { - if (!"pause".equals(statusMap.get(downloadEntry.getUrl()))) { + if (!"pause".equals(statusMap.get(downloadEntity.getUrl()))) { int base = (adapter.getDoneList().isEmpty() ? 0 : 1 + adapter.getDoneList().size()) + 1; - if (downloadEntry.getStatus().equals(DownloadStatus.done)) { + if (downloadEntity.getStatus().equals(DownloadStatus.done)) { // 删除下载中列表对应数据 adapter.getDownloadingList().remove(location.intValue()); if (adapter.getDownloadingList().isEmpty()) { @@ -75,7 +75,7 @@ public class GameDownLoadFragment extends Fragment implements View.OnClickListen } // 添加进已完成列表 - adapter.getDoneList().add(downloadEntry); + adapter.getDoneList().add(downloadEntity); if (adapter.getDoneList().size() == 1) { adapter.notifyItemRangeInserted(0, 2); } else { @@ -83,22 +83,22 @@ public class GameDownLoadFragment extends Fragment implements View.OnClickListen } urlMap.put(PackageUtils.getPackageNameByPath(getActivity(), - downloadEntry.getPath()), downloadEntry.getUrl()); + downloadEntity.getPath()), downloadEntity.getUrl()); adapter.notifyItemChanged(base - 1); } else { - adapter.getDownloadingList().set(location, downloadEntry); + adapter.getDownloadingList().set(location, downloadEntity); adapter.notifyItemChanged(base + location); } - if (downloadEntry.getStatus() == DownloadStatus.neterror) { + if (downloadEntity.getStatus() == DownloadStatus.neterror) { adapter.notifyItemChanged(base - 1); } } } else { - if (!deleteList.contains(downloadEntry.getUrl())) { - DownloadStatus status = downloadEntry.getStatus(); + if (!deleteList.contains(downloadEntity.getUrl())) { + DownloadStatus status = downloadEntity.getStatus(); if (status.equals(DownloadStatus.downloading) || status.equals(DownloadStatus.waiting)) { - adapter.getDownloadingList().add(downloadEntry); + adapter.getDownloadingList().add(downloadEntity); if (adapter.getDownloadingList().size() == 1) { EventBus.getDefault().post(new EBDownloadChanged("download", View.VISIBLE, 1)); @@ -106,7 +106,7 @@ public class GameDownLoadFragment extends Fragment implements View.OnClickListen EventBus.getDefault().post(new EBDownloadChanged("download", View.VISIBLE, adapter.getDoneList().size() + adapter.getDownloadingList().size())); } - locationMap.put(downloadEntry.getUrl(), adapter.getDownloadingList().size() - 1); + locationMap.put(downloadEntity.getUrl(), adapter.getDownloadingList().size() - 1); int base = (adapter.getDoneList().isEmpty() ? 0 : 1 + adapter.getDoneList().size()); if (adapter.getDownloadingList().size() == 1) { adapter.notifyItemRangeInserted(base, 2); @@ -282,24 +282,24 @@ public class GameDownLoadFragment extends Fragment implements View.OnClickListen @Override public void onResume() { super.onResume(); - List list = DownloadManager.getInstance(getActivity()).getAll(); + List list = DownloadManager.getInstance(getActivity()).getAll(); adapter.getDownloadingList().clear(); adapter.getDoneList().clear(); locationMap.clear(); statusMap.clear(); urlMap.clear(); - DownloadEntry downloadEntry; + DownloadEntity downloadEntity; for (int i = 0, size = list.size(); i < size; i++) { - downloadEntry = list.get(i); - statusMap.put(downloadEntry.getUrl(), downloadEntry.getStatus().name()); - if (DownloadStatus.done.equals(downloadEntry.getStatus())) { + downloadEntity = list.get(i); + statusMap.put(downloadEntity.getUrl(), downloadEntity.getStatus().name()); + if (DownloadStatus.done.equals(downloadEntity.getStatus())) { urlMap.put(PackageUtils.getPackageNameByPath(getActivity(), - downloadEntry.getPath()), downloadEntry.getUrl()); - adapter.getDoneList().add(downloadEntry); - locationMap.put(downloadEntry.getUrl(), adapter.getDoneList().size() - 1); + downloadEntity.getPath()), downloadEntity.getUrl()); + adapter.getDoneList().add(downloadEntity); + locationMap.put(downloadEntity.getUrl(), adapter.getDoneList().size() - 1); } else { - adapter.getDownloadingList().add(downloadEntry); - locationMap.put(downloadEntry.getUrl(), adapter.getDownloadingList().size() - 1); + adapter.getDownloadingList().add(downloadEntity); + locationMap.put(downloadEntity.getUrl(), adapter.getDownloadingList().size() - 1); } } diff --git a/app/src/main/java/com/gh/gamecenter/download/GameDownloadAdapter.java b/app/src/main/java/com/gh/gamecenter/download/GameDownloadAdapter.java index c68ab3fc0e..d6a6ea4a7d 100644 --- a/app/src/main/java/com/gh/gamecenter/download/GameDownloadAdapter.java +++ b/app/src/main/java/com/gh/gamecenter/download/GameDownloadAdapter.java @@ -24,7 +24,7 @@ import com.gh.common.util.PlatformUtils; import com.gh.common.util.SpeedUtils; import com.gh.common.view.CardLinearLayout; import com.gh.common.view.CardRelativeLayout; -import com.gh.download.DownloadEntry; +import com.gh.download.DownloadEntity; import com.gh.download.DownloadManager; import com.gh.download.DownloadStatus; import com.gh.gamecenter.MainActivity; @@ -49,8 +49,8 @@ public class GameDownloadAdapter extends RecyclerView.Adapter downloadingList; - private List doneList; + private List downloadingList; + private List doneList; private ArrayMap locationMap; private ArrayMap statusMap; @@ -94,7 +94,7 @@ public class GameDownloadAdapter extends RecyclerView.Adapter 0 && position <= doneList.size()) { entry = doneList.get(position - 1); @@ -146,7 +146,7 @@ public class GameDownloadAdapter extends RecyclerView.Adapter kv6 = new HashMap(); + if (entry.isPluggable()) { + Map kv6 = new HashMap<>(); kv6.put("操作", "点击安装完成"); DataUtils.onEvent(context, "插件化", entry.getName(), kv6); } @@ -305,11 +305,11 @@ public class GameDownloadAdapter extends RecyclerView.Adapter kv = new HashMap(); - kv.put("版本", entry.getMeta().get("platform")); + Map kv = new HashMap<>(); + kv.put("版本", entry.getPlatform()); DataUtils.onEvent(context, "游戏启动", entry.getName(), kv); - PackageUtils.launchApplicationByPackageName(context, entry.getMeta().get("packageName")); + PackageUtils.launchApplicationByPackageName(context, entry.getPackageName()); } } }); @@ -443,12 +443,12 @@ public class GameDownloadAdapter extends RecyclerView.Adapter kv6 = new HashMap(); + for (DownloadEntity downloadEntity : DownloadManager.getInstance(context).getAll()) { + if (downloadEntity.isPluggable() + && downloadEntity.getPath().equals(path)) { + Map kv6 = new HashMap<>(); kv6.put("操作", "点击插件化安装完成"); - DataUtils.onEvent(context, "插件化", downloadEntry.getName(), kv6); + DataUtils.onEvent(context, "插件化", downloadEntity.getName(), kv6); break; } } @@ -464,7 +464,7 @@ public class GameDownloadAdapter extends RecyclerView.Adapter getDownloadingList() { + public List getDownloadingList() { return downloadingList; } - public List getDoneList() { + public List getDoneList() { return doneList; } diff --git a/app/src/main/java/com/gh/gamecenter/download/GameUpdateAdapter.java b/app/src/main/java/com/gh/gamecenter/download/GameUpdateAdapter.java index 467dda1593..85642c34e0 100644 --- a/app/src/main/java/com/gh/gamecenter/download/GameUpdateAdapter.java +++ b/app/src/main/java/com/gh/gamecenter/download/GameUpdateAdapter.java @@ -28,7 +28,7 @@ import com.gh.common.util.PlatformUtils; import com.gh.common.util.TimestampUtils; import com.gh.common.view.CardLinearLayout; import com.gh.common.view.CardRelativeLayout; -import com.gh.download.DownloadEntry; +import com.gh.download.DownloadEntity; import com.gh.download.DownloadManager; import com.gh.gamecenter.R; import com.gh.gamecenter.db.info.ConcernInfo; @@ -66,7 +66,7 @@ public class GameUpdateAdapter extends RecyclerView.Adapter locationMap; private ArrayMap packageNameMap; private SparseBooleanArray successMap; - private SparseArray entryMap; + private SparseArray entryMap; private ArrayList updateList; @@ -108,43 +108,6 @@ public class GameUpdateAdapter extends RecyclerView.Adapter entries = DownloadManager.getInstance(context).getAll(); - for (DownloadEntry downloadEntry : entries) { - if (downloadEntry.getMeta().get("isPlugin") != null - && PackageManager.isInstalled(downloadEntry.getMeta().get("package_name"))) { - GameUpdateEntity game = new GameUpdateEntity( - downloadEntry.getMeta().get("game_id"), - downloadEntry.getName(), - downloadEntry.getMeta().get("icon"), - downloadEntry.getMeta().get("package_name"), - downloadEntry.getMeta().get("size"), - downloadEntry.getMeta().get("version"), - downloadEntry.getMeta().get("gh_version"), - downloadEntry.getUrl(), - downloadEntry.getMeta().get("platform"), - true); - if (updateList.isEmpty()) { - PackageManager.addUpdate(game); - updateList.add(game); - } else { - for (int i = 0, size = updateList.size(); i < size; i++) { - if (updateList.get(i).getUrl().equals(game.getUrl())) { - break; - } else if (i == size - 1) { - PackageManager.addUpdate(game); - updateList.add(game); - } - } - } - EventBus.getDefault().post( - new EBDownloadChanged("update", View.VISIBLE, updateList.size())); - } - } } // 根据包名获取更新(单个) @@ -276,14 +239,14 @@ public class GameUpdateAdapter extends RecyclerView.Adapter entries = DownloadManager.getInstance(context).getAll(); + List entries = DownloadManager.getInstance(context).getAll(); for (int i = 0, size = updateList.size(); i < size; i++) { locationMap.put(updateList.get(i).getPackageName(), i); packageNameMap.put(updateList.get(i).getUrl(), updateList.get(i).getPackageName()); successMap.put(i, false); - for (DownloadEntry downloadEntry : entries) { - if (updateList.get(i).getUrl().equals(downloadEntry.getUrl())) { - entryMap.put(i, downloadEntry); + for (DownloadEntity downloadEntity : entries) { + if (updateList.get(i).getUrl().equals(downloadEntity.getUrl())) { + entryMap.put(i, downloadEntity); break; } } @@ -370,9 +333,9 @@ public class GameUpdateAdapter extends RecyclerView.Adapter meta = new HashMap(); - meta.put("ETag", updateEntity.getEtag()); - meta.put("icon", updateEntity.getIcon()); - meta.put("platform", updateEntity.getPlatform()); - if (updateEntity.isPlugin()) { - meta.put("isPlugin", "true"); + downloadEntity.setETag(updateEntity.getEtag()); + downloadEntity.setIcon(updateEntity.getIcon()); + downloadEntity.setPlatform(updateEntity.getPlatform()); + HashMap meta = new HashMap<>(); + if (updateEntity.isPluggable()) { + downloadEntity.setPluggable(true); } else { - meta.put("isUpdate", "true"); + downloadEntity.setUpdate(true); } - entry.setMeta(meta); - if (entry.getName().contains("光环助手")) { + if (downloadEntity.getName().contains("光环助手")) { DownloadManager.getInstance(context).pauseAll(); } - DownloadManager.getInstance(context).add(entry); - entryMap.put(position, entry); + DownloadManager.getInstance(context).add(downloadEntity); + entryMap.put(position, downloadEntity); } Runnable runnable = new Runnable() { @@ -643,7 +605,7 @@ public class GameUpdateAdapter extends RecyclerView.Adapter getEntryMap() { + public SparseArray getEntryMap() { return entryMap; } diff --git a/app/src/main/java/com/gh/gamecenter/download/GameUpdateFragment.java b/app/src/main/java/com/gh/gamecenter/download/GameUpdateFragment.java index 86395f9cf8..0c510281c0 100644 --- a/app/src/main/java/com/gh/gamecenter/download/GameUpdateFragment.java +++ b/app/src/main/java/com/gh/gamecenter/download/GameUpdateFragment.java @@ -108,7 +108,7 @@ public class GameUpdateFragment extends Fragment { if (packageName != null) { Integer location = adapter.getLocationMap().get(packageName); adapter.getEntryMap().remove(location); - if (adapter.getUpdateList().get(location).isPlugin()) { + if (adapter.getUpdateList().get(location).isPluggable()) { if (adapter.getUpdateList().size() == 1) { adapter.getUpdateList().remove(location.intValue()); gameupdate_rv_show.getAdapter().notifyDataSetChanged(); @@ -145,7 +145,7 @@ public class GameUpdateFragment extends Fragment { } else if ("卸载".equals(busFour.getType())) { Integer location = adapter.getLocationMap().get(busFour.getPackageName()); if (location != null && adapter.getUpdateList().size() != 0) { - if (adapter.getUpdateList().get(location).isPlugin()) { + if (adapter.getUpdateList().get(location).isPluggable()) { EventBus.getDefault().post( new EBDownloadChanged("update", View.VISIBLE, -1)); if (adapter.getUpdateList().size() == 1) { diff --git a/app/src/main/java/com/gh/gamecenter/entity/GameEntity.java b/app/src/main/java/com/gh/gamecenter/entity/GameEntity.java index cb7bfc83db..2941cfedb8 100644 --- a/app/src/main/java/com/gh/gamecenter/entity/GameEntity.java +++ b/app/src/main/java/com/gh/gamecenter/entity/GameEntity.java @@ -2,7 +2,7 @@ package com.gh.gamecenter.entity; import android.support.v4.util.ArrayMap; -import com.gh.download.DownloadEntry; +import com.gh.download.DownloadEntity; import com.google.gson.annotations.SerializedName; import java.util.ArrayList; @@ -31,13 +31,13 @@ public class GameEntity { @SerializedName("d_button_add_word") private String downloadAddWord; - private ArrayMap entryMap; + private ArrayMap entryMap; private String image; private String type; - private String pluginPlatform; + private boolean isPluggable; private String link; @@ -91,7 +91,7 @@ public class GameEntity { public ArrayList getApk() { if (apk == null) { - apk = new ArrayList(); + apk = new ArrayList<>(); } return apk; } @@ -124,11 +124,11 @@ public class GameEntity { this.test = test; } - public ArrayMap getEntryMap() { + public ArrayMap getEntryMap() { return entryMap; } - public void setEntryMap(ArrayMap entryMap) { + public void setEntryMap(ArrayMap entryMap) { this.entryMap = entryMap; } @@ -156,12 +156,12 @@ public class GameEntity { this.type = type; } - public String getPluginPlatform() { - return pluginPlatform; + public boolean isPluggable() { + return isPluggable; } - public void setPluginPlatform(String pluginPlatform) { - this.pluginPlatform = pluginPlatform; + public void setPluggable(boolean pluggable) { + isPluggable = pluggable; } public GameEntity clone() { @@ -170,15 +170,15 @@ public class GameEntity { gameEntity.setIcon(icon); gameEntity.setName(name); gameEntity.setBrief(brief); - gameEntity.setTag(new ArrayList(tag)); - gameEntity.setApk(new ArrayList(apk)); + gameEntity.setTag(new ArrayList<>(tag)); + gameEntity.setApk(new ArrayList<>(apk)); gameEntity.setSlide(slide); gameEntity.setTest(test); gameEntity.setDownloadAddWord(downloadAddWord); - gameEntity.setEntryMap(new ArrayMap(entryMap)); + gameEntity.setEntryMap(new ArrayMap(entryMap)); gameEntity.setImage(image); gameEntity.setType(type); - gameEntity.setPluginPlatform(pluginPlatform); + gameEntity.setPluggable(isPluggable); return gameEntity; } diff --git a/app/src/main/java/com/gh/gamecenter/entity/GameUpdateEntity.java b/app/src/main/java/com/gh/gamecenter/entity/GameUpdateEntity.java index 84a2057c0c..f24963b3fb 100644 --- a/app/src/main/java/com/gh/gamecenter/entity/GameUpdateEntity.java +++ b/app/src/main/java/com/gh/gamecenter/entity/GameUpdateEntity.java @@ -2,6 +2,8 @@ package com.gh.gamecenter.entity; import com.google.gson.annotations.SerializedName; +import java.util.ArrayList; + public class GameUpdateEntity { @SerializedName("game_id") @@ -25,29 +27,34 @@ public class GameUpdateEntity { private String platform; - private boolean isPlugin; + private boolean isPluggable; private ApkEntity apk; private String etag; + private String brief; + + private ArrayList tag; + public GameUpdateEntity() { } - public GameUpdateEntity(String id, String name, String icon, - String packageName, String size, String version, String ghVersion, - String url, String platform, boolean isPlugin) { - this.id = id; - this.name = name; - this.icon = icon; - this.packageName = packageName; - this.size = size; - this.version = version; - this.ghVersion = ghVersion; - this.url = url; - this.platform = platform; - this.isPlugin = isPlugin; + public String getBrief() { + return brief; + } + + public void setBrief(String brief) { + this.brief = brief; + } + + public void setTag(ArrayList tag) { + this.tag = tag; + } + + public ArrayList getTag() { + return tag; } public String getId() { @@ -122,12 +129,12 @@ public class GameUpdateEntity { this.platform = platform; } - public boolean isPlugin() { - return isPlugin; + public boolean isPluggable() { + return isPluggable; } - public void setPlugin(boolean isPlugin) { - this.isPlugin = isPlugin; + public void setPluggable(boolean isPluggable) { + this.isPluggable = isPluggable; } public String getEtag() { diff --git a/app/src/main/java/com/gh/gamecenter/eventbus/EBDownloadStatus.java b/app/src/main/java/com/gh/gamecenter/eventbus/EBDownloadStatus.java index 966ba35c13..0127147787 100644 --- a/app/src/main/java/com/gh/gamecenter/eventbus/EBDownloadStatus.java +++ b/app/src/main/java/com/gh/gamecenter/eventbus/EBDownloadStatus.java @@ -9,7 +9,7 @@ public class EBDownloadStatus { private String name; private String platform; private String url; - private String PluginPlatform; + private boolean isPluggable; public EBDownloadStatus(String status) { this.status = status; @@ -38,12 +38,11 @@ public class EBDownloadStatus { return url; } - public String getPluginPlatform() { - return PluginPlatform; + public boolean isPluggable() { + return isPluggable; } - public void setPluginPlatform(String pluginPlatform) { - PluginPlatform = pluginPlatform; + public void setPluggable(boolean pluggable) { + isPluggable = pluggable; } - } diff --git a/app/src/main/java/com/gh/gamecenter/game/Game1Fragment.java b/app/src/main/java/com/gh/gamecenter/game/Game1Fragment.java index db6af10b9f..6589817fe4 100644 --- a/app/src/main/java/com/gh/gamecenter/game/Game1Fragment.java +++ b/app/src/main/java/com/gh/gamecenter/game/Game1Fragment.java @@ -15,7 +15,7 @@ import com.gh.base.AppController; import com.gh.base.BaseFragment; import com.gh.common.util.DownloadItemUtils; import com.gh.download.DataWatcher; -import com.gh.download.DownloadEntry; +import com.gh.download.DownloadEntity; import com.gh.download.DownloadManager; import com.gh.gamecenter.R; import com.gh.gamecenter.entity.ApkEntity; @@ -49,29 +49,29 @@ public class Game1Fragment extends BaseFragment implements SwipeRefreshLayout.On private DataWatcher dataWatcher = new DataWatcher() { @Override - public void onDataChanged(DownloadEntry downloadEntry) { + public void onDataChanged(DownloadEntity downloadEntity) { if (!fm_game_swipe_refresh.isRefreshing()) { - ArrayList locationList = adapter.getLocationMap().get(downloadEntry.getName()); + ArrayList locationList = adapter.getLocationMap().get(downloadEntity.getName()); if (locationList != null && locationList.size() != 0) { for (int location : locationList) { GameEntity detailedEntity = getEntityByLocation(location); if (detailedEntity != null) { DownloadItemUtils.processDate(getActivity(), detailedEntity, - downloadEntry, adapter, location); + downloadEntity, adapter, location); } } } //特殊 插件化update - if (downloadEntry.getMeta().get("PluginPlatform") != null) { - locationList = adapter.getLocationMap().get(downloadEntry.getName() - + " - " + downloadEntry.getMeta().get("PluginPlatform")); + if (downloadEntity.isPluggable()) { + locationList = adapter.getLocationMap().get(downloadEntity.getName() + + " - " + downloadEntity.getPlatform()); if (locationList != null && locationList.size() != 0) { for (int location : locationList) { GameEntity detailedEntity = getEntityByLocation(location); if (detailedEntity != null) { DownloadItemUtils.processDate(getActivity(), detailedEntity, - downloadEntry, adapter, location); + downloadEntity, adapter, location); } } } @@ -132,8 +132,8 @@ public class Game1Fragment extends BaseFragment implements SwipeRefreshLayout.On } } //特殊 插件化update - if (status.getPluginPlatform() != null) { - locationList = adapter.getLocationMap().get(status.getName() + " - " + status.getPluginPlatform()); + if (status.isPluggable()) { + locationList = adapter.getLocationMap().get(status.getName() + " - " + status.getPlatform()); if (locationList != null && locationList.size() != 0) { for (int location : locationList) { detailedEntity = getEntityByLocation(location); @@ -144,6 +144,10 @@ public class Game1Fragment extends BaseFragment implements SwipeRefreshLayout.On } } } + } else if ("plugin".equals(status.getStatus())) { + if (adapter.getPluginList().isEmpty()) { + adapter.initPlugin(); + } } } diff --git a/app/src/main/java/com/gh/gamecenter/game/Game1FragmentAdapter.java b/app/src/main/java/com/gh/gamecenter/game/Game1FragmentAdapter.java index b72792a1c9..1269093749 100644 --- a/app/src/main/java/com/gh/gamecenter/game/Game1FragmentAdapter.java +++ b/app/src/main/java/com/gh/gamecenter/game/Game1FragmentAdapter.java @@ -46,21 +46,18 @@ import com.gh.gamecenter.adapter.viewholder.GameHeadViewHolder; import com.gh.gamecenter.adapter.viewholder.GameImageViewHolder; import com.gh.gamecenter.adapter.viewholder.GameNormalViewHolder; import com.gh.gamecenter.adapter.viewholder.GameTestViewHolder; -import com.gh.gamecenter.db.info.ConcernInfo; import com.gh.gamecenter.entity.ApkEntity; import com.gh.gamecenter.entity.GameEntity; +import com.gh.gamecenter.entity.GameUpdateEntity; import com.gh.gamecenter.entity.SlideEntity; import com.gh.gamecenter.entity.SubjectEntity; -import com.gh.gamecenter.manager.ConcernManager; import com.gh.gamecenter.manager.GameManager; import com.gh.gamecenter.manager.PackageManager; import com.gh.gamecenter.volley.extended.JsonArrayExtendedRequest; -import com.gh.gamecenter.volley.extended.JsonObjectExtendedRequest; import com.google.gson.Gson; import com.google.gson.reflect.TypeToken; import org.json.JSONArray; -import org.json.JSONObject; import java.lang.reflect.Type; import java.util.ArrayList; @@ -158,7 +155,6 @@ public class Game1FragmentAdapter extends RecyclerView.Adapter updateList = PackageManager.getUpdateList(); + if (updateList.isEmpty()) { + return; + } + GameUpdateEntity gameUpdateEntity; + for (int i = 0, size= updateList.size(); i < size; i++) { + gameUpdateEntity = updateList.get(i); + if (gameUpdateEntity.isPluggable()) { + pluginSize++; + if (pluginList.size() < 3) { + GameEntity gameEntity = new GameEntity(); + gameEntity.setId(gameUpdateEntity.getId()); + gameEntity.setName(gameUpdateEntity.getName()); + gameEntity.setIcon(gameUpdateEntity.getIcon()); + gameEntity.setTag(gameUpdateEntity.getTag()); + gameEntity.setBrief(gameUpdateEntity.getBrief()); + gameEntity.setPluggable(true); + + ApkEntity apkEntity = new ApkEntity(); + apkEntity.setUrl(gameUpdateEntity.getUrl()); + apkEntity.setPackageName(gameUpdateEntity.getPackageName()); + apkEntity.setSize(gameUpdateEntity.getSize()); + apkEntity.setVersion(gameUpdateEntity.getVersion()); + apkEntity.setGhVersion(gameUpdateEntity.getGhVersion()); + apkEntity.setPlatform(gameUpdateEntity.getPlatform()); + apkEntity.setEtag(gameUpdateEntity.getEtag()); + + ArrayList apk = new ArrayList<>(); + apk.add(apkEntity); + gameEntity.setApk(apk); + + pluginList.add(gameEntity); + } + } + } + if (!pluginList.isEmpty()) { + for (GameEntity gEntity : pluginList) { + gEntity.setEntryMap(DownloadManager.getInstance(context). + getEntryMap(gEntity.getName())); + } + notifyItemRangeInserted(1, pluginList.size() + 1); + initLocationMap(); + } + } + private void showView() { if (isSlideError && isListError) { Toast.makeText(context, "加载失败,请检查网络状态", Toast.LENGTH_SHORT).show(); @@ -300,100 +344,6 @@ public class Game1FragmentAdapter extends RecyclerView.Adapter infos = concernManager.getInstalledGame(); - final int size = infos.size(); - final List list = new ArrayList<>(); - count = 0; - for (ConcernInfo info : infos) { - JsonObjectExtendedRequest request = new JsonObjectExtendedRequest( - TimestampUtils.addTimestamp(Config.HOST + "v1d45/game/" - + info.getId() + "/digest", Constants.GAME_CD), - new Response.Listener() { - @Override - public void onResponse(JSONObject response) { - Gson gson = new Gson(); - GameEntity gameEntity = gson.fromJson(response.toString(), GameEntity.class); - list.add(gameEntity); - addCount(); - if (count == size) { - processingData(list); - } - } - }, - new Response.ErrorListener() { - @Override - public void onErrorResponse(VolleyError error) { - addCount(); - if (count == size) { - processingData(list); - } - } - }); - AppController.addToRequestQueue(request, Game1Fragment.class); - } - } - - private void processingData(List list) { - if (list == null || list.isEmpty()) { - return; - } - ConcernManager concernManager = new ConcernManager(context); - PackageManager mPackageManager = new PackageManager(context); - List infos = concernManager.getInstalledGame(); - HashMap map; - GameEntity gameEntity; - for (ConcernInfo info : infos) { - for (int i = 0, size = list.size(); i < size; i++) { - gameEntity = list.get(i); - if (gameEntity.getId().equals(info.getId()) - && gameEntity.getTag() != null && gameEntity.getTag().size() != 0 - && gameEntity.getApk() != null) { - map = info.getPackageNames(); - for (String key : map.keySet()) { - if (map.get(key) && !mPackageManager.isSignature(key)) { - pluginSize++; - if (pluginList.size() < 3) { - for (ApkEntity apkEntity : gameEntity.getApk()) { - if (apkEntity.getPackageName().equals(key)) { - GameEntity entity = gameEntity.clone(); - entity.setPluginPlatform( - PlatformUtils.getInstance(context).getPlatformName(apkEntity.getPlatform())); - ArrayList apkList = new ArrayList<>(); - apkList.add(apkEntity); - entity.setApk(apkList); - pluginList.add(entity); - break; - } - } - } - } - } - break; - } - } - } - if (!pluginList.isEmpty()) { - GameManager manager = new GameManager(context); - for (GameEntity gEntity : pluginList) { - gEntity.setEntryMap(DownloadManager.getInstance(context).getEntryMap(gEntity.getName())); - manager.addOrUpdate(gEntity.getApk(), gEntity.getId(), gEntity.getName()); - } - notifyItemRangeInserted(1, pluginList.size() + 1); - initLocationMap(); - } - } - private void initLocationMap() { locationMap.clear(); @@ -405,7 +355,7 @@ public class Game1FragmentAdapter extends RecyclerView.Adapter 1 && position <= 1 + pluginList.size()) { gameEntity = pluginList.get(position - 2); - name = gameEntity.getName() + " - " + gameEntity.getPluginPlatform(); + name = gameEntity.getName() + " - " + gameEntity.getApk().get(0).getPlatform(); list = locationMap.get(name); if (list == null) { list = new ArrayList<>(); @@ -413,7 +363,8 @@ public class Game1FragmentAdapter extends RecyclerView.Adapter locationList = adapter.getLocationMap().get(downloadEntry.getName()); + ArrayList locationList = adapter.getLocationMap().get(downloadEntity.getName()); if (locationList != null && locationList.size() != 0) { for (int location : locationList) { GameEntity detailedEntity = getEntityByLocation(location); if (detailedEntity != null) { DownloadItemUtils.processDate(getActivity(), detailedEntity, - downloadEntry, adapter, location); + downloadEntity, adapter, location); } } } diff --git a/app/src/main/java/com/gh/gamecenter/game/Game3Fragment.java b/app/src/main/java/com/gh/gamecenter/game/Game3Fragment.java index 5482e58d51..2e7b830ac8 100644 --- a/app/src/main/java/com/gh/gamecenter/game/Game3Fragment.java +++ b/app/src/main/java/com/gh/gamecenter/game/Game3Fragment.java @@ -16,7 +16,7 @@ import com.gh.base.AppController; import com.gh.base.BaseFragment; import com.gh.common.util.DownloadItemUtils; import com.gh.download.DataWatcher; -import com.gh.download.DownloadEntry; +import com.gh.download.DownloadEntity; import com.gh.download.DownloadManager; import com.gh.gamecenter.R; import com.gh.gamecenter.entity.ApkEntity; @@ -51,14 +51,14 @@ public class Game3Fragment extends BaseFragment implements OnRefreshListener { // 黄壮华 添加观察者 修改2015/8/15 private DataWatcher dataWatcher = new DataWatcher() { @Override - public void onDataChanged(DownloadEntry downloadEntry) { + public void onDataChanged(DownloadEntity downloadEntity) { if (!fm_game_swipe_refresh.isRefreshing()) { - Integer location = adapter.getLocationMap().get(downloadEntry.getName()); + Integer location = adapter.getLocationMap().get(downloadEntity.getName()); if (location != null) { GameEntity detailedEntity = adapter.getList().get(location); if (detailedEntity != null) { DownloadItemUtils.processDate(getActivity(), detailedEntity, - downloadEntry, adapter, location); + downloadEntity, adapter, location); } } } diff --git a/app/src/main/java/com/gh/gamecenter/personal/ConcernFragment.java b/app/src/main/java/com/gh/gamecenter/personal/ConcernFragment.java index 4bcc4c5b10..eafc33fa26 100644 --- a/app/src/main/java/com/gh/gamecenter/personal/ConcernFragment.java +++ b/app/src/main/java/com/gh/gamecenter/personal/ConcernFragment.java @@ -12,7 +12,7 @@ import com.gh.common.util.DisplayUtils; import com.gh.common.util.DownloadItemUtils; import com.gh.common.util.Utils; import com.gh.download.DataWatcher; -import com.gh.download.DownloadEntry; +import com.gh.download.DownloadEntity; import com.gh.download.DownloadManager; import com.gh.gamecenter.R; import com.gh.gamecenter.entity.GameEntity; @@ -42,12 +42,12 @@ public class ConcernFragment extends BaseFragment { private DataWatcher dataWatcher = new DataWatcher() { @Override - public void onDataChanged(DownloadEntry downloadEntry) { - Integer location = adapter.getLocationMap().get(downloadEntry.getName()); + public void onDataChanged(DownloadEntity downloadEntity) { + Integer location = adapter.getLocationMap().get(downloadEntity.getName()); if (location != null) { GameEntity detailedEntity = adapter.getGameList().get(location); if (detailedEntity != null) { - DownloadItemUtils.processDate(getActivity(), detailedEntity, downloadEntry, + DownloadItemUtils.processDate(getActivity(), detailedEntity, downloadEntity, adapter, location + 2); } } diff --git a/app/src/main/java/com/gh/gamecenter/personal/ConcernFragmentAdapter.java b/app/src/main/java/com/gh/gamecenter/personal/ConcernFragmentAdapter.java index 2045924c9c..769ff8a9c8 100644 --- a/app/src/main/java/com/gh/gamecenter/personal/ConcernFragmentAdapter.java +++ b/app/src/main/java/com/gh/gamecenter/personal/ConcernFragmentAdapter.java @@ -308,7 +308,7 @@ public class ConcernFragmentAdapter extends RecyclerView.Adapter Set accept time fail for %1$s. 100% - +