From da8ac359327331e1aff0c559d69089d3ba5a3b05 Mon Sep 17 00:00:00 2001 From: huangzhuanghua <401742778@qq.com> Date: Sun, 16 Oct 2016 09:25:10 +0800 Subject: [PATCH 1/6] =?UTF-8?q?=E8=A7=A3=E5=86=B3=E6=90=9C=E7=B4=A2?= =?UTF-8?q?=E7=9A=84=E6=B8=B8=E6=88=8F=E6=97=A0apk=E8=BF=98=E6=98=BE?= =?UTF-8?q?=E7=A4=BA=E4=B8=8B=E8=BD=BD=E6=8C=89=E9=92=AE=E7=9A=84=E9=97=AE?= =?UTF-8?q?=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../search/SearchGameDetailFragmentAdapter.java | 10 +++------- .../search/SearchGameListFragmentAdapter.java | 10 +++------- 2 files changed, 6 insertions(+), 14 deletions(-) diff --git a/app/src/main/java/com/gh/gamecenter/search/SearchGameDetailFragmentAdapter.java b/app/src/main/java/com/gh/gamecenter/search/SearchGameDetailFragmentAdapter.java index 7db12237a9..667ddfa5b5 100644 --- a/app/src/main/java/com/gh/gamecenter/search/SearchGameDetailFragmentAdapter.java +++ b/app/src/main/java/com/gh/gamecenter/search/SearchGameDetailFragmentAdapter.java @@ -177,9 +177,11 @@ public class SearchGameDetailFragmentAdapter extends RecyclerView.Adapter Date: Wed, 19 Oct 2016 10:58:48 +0800 Subject: [PATCH 2/6] =?UTF-8?q?=E7=BB=9F=E4=B8=80ITEM=20TYPE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/gh/common/constant/ItemViewType.java | 24 +++++++++++ .../gh/gamecenter/adapter/SubjectAdapter.java | 26 +++++++----- .../download/GameDownLoadFragment.java | 3 +- .../gamecenter/game/Game1FragmentAdapter.java | 40 ++++++++----------- .../gamecenter/game/Game2FragmentAdapter.java | 32 ++++++--------- .../gamecenter/game/Game3FragmentAdapter.java | 12 ++++-- .../gamecenter/news/News1FragmentAdapter.java | 25 +++++------- .../gamecenter/news/News2FragmentAdapter.java | 25 +++++------- .../gamecenter/news/News3FragmentAdapter.java | 34 +++++++--------- .../gamecenter/news/News4FragmentAdapter.java | 12 ++++-- .../personal/ConcernFragmentAdapter.java | 10 +++-- .../personal/InstallFragmentAdapter.java | 10 +++-- .../search/SearchGameListFragmentAdapter.java | 12 ++++-- .../search/SearchHistoryFragmentAdapter.java | 12 ++++-- 14 files changed, 151 insertions(+), 126 deletions(-) create mode 100644 app/src/main/java/com/gh/common/constant/ItemViewType.java diff --git a/app/src/main/java/com/gh/common/constant/ItemViewType.java b/app/src/main/java/com/gh/common/constant/ItemViewType.java new file mode 100644 index 0000000000..8f0afd3f38 --- /dev/null +++ b/app/src/main/java/com/gh/common/constant/ItemViewType.java @@ -0,0 +1,24 @@ +package com.gh.common.constant; + +/** + * Created by LGT on 2016/10/16. + */ +public class ItemViewType { + + public static final int COLUMN_HEADER = 0; // 专题头部布局 + public static final int GAME_SLIDE = 1; // 滚动图布局 + public static final int GAME_NORMAL = 2; // 正常游戏布局 + public static final int GAME_TEST = 3; // 测试游戏布局 + public static final int GAME_IMAGE = 4; // 游戏大图布局 + public static final int NEWS_HEADER = 5; // 新闻头部布局 + public static final int NEWS_TEXT = 6; // 新闻文本布局 + public static final int NEWS_IMAGE = 7; // 新闻带图布局 + public static final int NEWS_IMAGE1 = 8; // 新闻带一张小图布局 + public static final int NEWS_IMAGE2 = 9; // 新闻带三张小图布局 + public static final int NEWS_IMAGE3 = 10; // 新闻带一张大图布局 + public static final int NEWS_DIGEST = 11; // 新闻摘要布局 + public static final int SEARCH_NORMAL = 12; // 搜索正常布局 + public static final int SEARCH_DELETE = 13; // 清空历史记录布局 + public static final int LOADING = 14; // 加载布局 + +} diff --git a/app/src/main/java/com/gh/gamecenter/adapter/SubjectAdapter.java b/app/src/main/java/com/gh/gamecenter/adapter/SubjectAdapter.java index 7d4d05cdca..6b96fabc5f 100644 --- a/app/src/main/java/com/gh/gamecenter/adapter/SubjectAdapter.java +++ b/app/src/main/java/com/gh/gamecenter/adapter/SubjectAdapter.java @@ -14,6 +14,7 @@ import com.android.volley.TimeoutError; import com.android.volley.VolleyError; import com.gh.base.AppController; import com.gh.common.constant.Config; +import com.gh.common.constant.ItemViewType; import com.gh.common.util.DataUtils; import com.gh.common.util.DisplayUtils; import com.gh.common.util.DownloadItemUtils; @@ -60,7 +61,6 @@ public class SubjectAdapter extends RecyclerView.Adapter subjectList; private boolean order; - private static final int FOOTER_ITEM = 101; private boolean isLoaded; private ArrayMap> locationMap; @@ -193,36 +193,40 @@ public class SubjectAdapter extends RecyclerView.Adapter { - private class ITEM_TYPE { - public static final int slide = 0; // 滚动图 - public static final int head = 1; // 专题头部 - public static final int game_normal_type = 2; // 游戏布局1 - public static final int game_test_type = 3; // 游戏布局2 - public static final int image = 4; // 大图布局 - public static final int footer_view = 5; // 加载布局 - } - private Game1Fragment fragment; private Context context; private OnCallBackListener listener; @@ -419,15 +411,15 @@ public class Game1FragmentAdapter extends RecyclerView.Adapter 1 && position <= 1 + pluginList.size()) { - return ITEM_TYPE.game_normal_type; + return ItemViewType.GAME_NORMAL; } } @@ -444,29 +436,29 @@ public class Game1FragmentAdapter extends RecyclerView.Adapter { - private class ITEM_TYPE { - public final static int HEAD = 100;// 专题头部 - public final static int GAME_NORMAL = 101;// 游戏布局1 - public final static int GAME_TEST = 102;// 游戏布局2 - public final static int IMAGE = 103;// 大图布局 - public final static int FOOTER = 104;// 加载布局 - } - private Game2Fragment fragment; private Context context; private OnCallBackListener listener; @@ -224,47 +217,48 @@ public class Game2FragmentAdapter extends RecyclerView.Adapter{ - private class ITEM_TYPE { - public static final int normal = 0;//正常布局 - public static final int special1 = 1;//一张1:3图 - public static final int special2 = 2;//三张4:3图 - public static final int footer = 3;//页脚 - } - private News1Fragment fragment; private Context context; private OnCallBackListener listener; @@ -206,23 +200,24 @@ public class News1FragmentAdapter extends RecyclerView.Adapter{ - private class ITEM_TYPE { - public static final int normal = 0;//正常布局 - public static final int special1 = 1;//一张1:3图 - public static final int special2 = 2;//三张4:3图 - public static final int footer = 3;//页脚 - } - private News2Fragment fragment; private Context context; private OnCallBackListener listener; @@ -207,23 +201,24 @@ public class News2FragmentAdapter extends RecyclerView.Adapter { - - public static class ITEM_TYPE { - public static final int head = 1;// head - public static final int news_text = 2;// 新闻列表1类型 - public static final int news_image = 3;// 新闻列表2类型 - public static final int refresh_footer = 4;// 刷新布局类型 - } +public class News3FragmentAdapter extends RecyclerView.Adapter { private int position_today = -1;// 今天head的位置 private int position_before = -1;// 昨天/以前head的位置 @@ -280,53 +273,54 @@ public class News3FragmentAdapter extends if (position_today != -1) { if (position == position_today) { - return ITEM_TYPE.head; + return ItemViewType.NEWS_HEADER; } if (position == position_today + 1) { if (!TextUtils.isEmpty(todayNewsList.get(0).getThumb())) { - return ITEM_TYPE.news_image; + return ItemViewType.NEWS_IMAGE; } else { - return ITEM_TYPE.news_text; + return ItemViewType.NEWS_TEXT; } } if (position > position_today + 1 && position <= todayNewsList.size() + position_today) { - return ITEM_TYPE.news_text; + return ItemViewType.NEWS_TEXT; } } if (position_before != -1) { if (position == position_before) { - return ITEM_TYPE.head; + return ItemViewType.NEWS_HEADER; } if (position > position_before && position <= beforeNewsList.size() + position_before) { - return ITEM_TYPE.news_text; + return ItemViewType.NEWS_TEXT; } } - return ITEM_TYPE.refresh_footer; + return ItemViewType.LOADING; } @Override public RecyclerView.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) { - if (viewType == ITEM_TYPE.head) { + if (viewType == ItemViewType.NEWS_HEADER) { View view = LayoutInflater.from(parent.getContext()).inflate( R.layout.news_list_item_category, parent, false); return new NewsHeadViewHolder(view); - } else if (viewType == ITEM_TYPE.news_image) { + } else if (viewType == ItemViewType.NEWS_IMAGE) { View view = LayoutInflater.from(parent.getContext()).inflate( R.layout.home_list_item_newsimage_type, parent, false); return new NewsImageViewHolder(view); - } else if (viewType == ITEM_TYPE.news_text) { + } else if (viewType == ItemViewType.NEWS_TEXT) { View view = LayoutInflater.from(parent.getContext()).inflate( R.layout.home_list_item_newsnormal_type, parent, false); return new NewsTextViewHolder(view); - } else { + } else if (viewType == ItemViewType.LOADING) { View view = LayoutInflater.from(parent.getContext()).inflate( R.layout.gamedetail_item_loading, parent, false); return new NewsFooterViewHolder(view); } + return null; } @Override diff --git a/app/src/main/java/com/gh/gamecenter/news/News4FragmentAdapter.java b/app/src/main/java/com/gh/gamecenter/news/News4FragmentAdapter.java index eff4abacbf..56fadfc5de 100644 --- a/app/src/main/java/com/gh/gamecenter/news/News4FragmentAdapter.java +++ b/app/src/main/java/com/gh/gamecenter/news/News4FragmentAdapter.java @@ -20,6 +20,7 @@ import com.android.volley.VolleyError; import com.android.volley.toolbox.DiskBasedCache; import com.gh.base.AppController; import com.gh.common.constant.Config; +import com.gh.common.constant.ItemViewType; import com.gh.common.util.ConcernUtils; import com.gh.common.util.DataUtils; import com.gh.common.util.DisplayUtils; @@ -409,20 +410,25 @@ public class News4FragmentAdapter extends RecyclerView.Adapter= 0 && position < gameList.size()) { - return 1; + return ItemViewType.GAME_NORMAL; } - return 0; + return ItemViewType.LOADING; } private void initGameNormal(final GameNormalViewHolder holder, final GameEntity gameEntity, int i) { diff --git a/app/src/main/java/com/gh/gamecenter/personal/InstallFragmentAdapter.java b/app/src/main/java/com/gh/gamecenter/personal/InstallFragmentAdapter.java index e85c719735..4aff36b98a 100644 --- a/app/src/main/java/com/gh/gamecenter/personal/InstallFragmentAdapter.java +++ b/app/src/main/java/com/gh/gamecenter/personal/InstallFragmentAdapter.java @@ -11,6 +11,7 @@ import com.android.volley.Response; import com.android.volley.VolleyError; import com.gh.base.AppController; import com.gh.common.constant.Config; +import com.gh.common.constant.ItemViewType; import com.gh.common.util.DataUtils; import com.gh.common.util.DisplayUtils; import com.gh.common.util.DownloadItemUtils; @@ -324,15 +325,16 @@ public class InstallFragmentAdapter extends RecyclerView.Adapter= 0 && position < gameList.size()) { - return 1; + return ItemViewType.GAME_NORMAL; } - return 0; + return ItemViewType.LOADING; } private void initGameNormal(final GameNormalViewHolder holder, final GameEntity gameEntity, int i) { diff --git a/app/src/main/java/com/gh/gamecenter/search/SearchGameListFragmentAdapter.java b/app/src/main/java/com/gh/gamecenter/search/SearchGameListFragmentAdapter.java index d8ddea603e..f00923fd4b 100644 --- a/app/src/main/java/com/gh/gamecenter/search/SearchGameListFragmentAdapter.java +++ b/app/src/main/java/com/gh/gamecenter/search/SearchGameListFragmentAdapter.java @@ -14,6 +14,7 @@ import com.android.volley.Response; import com.android.volley.VolleyError; import com.gh.base.AppController; import com.gh.common.constant.Config; +import com.gh.common.constant.ItemViewType; import com.gh.common.util.DataUtils; import com.gh.common.util.DisplayUtils; import com.gh.common.util.GameUtils; @@ -114,7 +115,11 @@ public class SearchGameListFragmentAdapter extends RecyclerView.Adapter Date: Wed, 19 Oct 2016 11:49:17 +0800 Subject: [PATCH 3/6] =?UTF-8?q?=E6=8F=92=E4=BB=B6=E5=8C=96=E5=88=A4?= =?UTF-8?q?=E6=96=AD=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/src/main/java/com/gh/base/DetailActivity.java | 4 ++-- app/src/main/java/com/gh/common/util/DownloadItemUtils.java | 1 + app/src/main/java/com/gh/gamecenter/MainActivity.java | 6 ++++-- .../java/com/gh/gamecenter/adapter/PlatformAdapter.java | 1 + 4 files changed, 8 insertions(+), 4 deletions(-) diff --git a/app/src/main/java/com/gh/base/DetailActivity.java b/app/src/main/java/com/gh/base/DetailActivity.java index 17827f8e9f..4e5d165b09 100644 --- a/app/src/main/java/com/gh/base/DetailActivity.java +++ b/app/src/main/java/com/gh/base/DetailActivity.java @@ -195,8 +195,8 @@ public abstract class DetailActivity extends BaseActivity implements View.OnClic } } else { if (gameEntity.getTag() != null && gameEntity.getTag().size() != 0 - && !PackageUtils.isSignature(this, gameEntity.getApk().get(0).getPackageName()) - ) { + && !TextUtils.isEmpty(gameEntity.getApk().get(0).getGhVersion()) + && !PackageUtils.isSignature(this, gameEntity.getApk().get(0).getPackageName())) { if (TextUtils.isEmpty(downloadAddWord)) { detail_tv_download.setBackgroundResource( R.drawable.game_item_btn_plugin_style); 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 90a70b1b4d..3cb6772885 100644 --- a/app/src/main/java/com/gh/common/util/DownloadItemUtils.java +++ b/app/src/main/java/com/gh/common/util/DownloadItemUtils.java @@ -133,6 +133,7 @@ public class DownloadItemUtils { downloadBtn.setBackgroundResource(R.drawable.game_item_btn_download_style); } else { if (gameEntity.getTag() != null && gameEntity.getTag().size() != 0 + && !TextUtils.isEmpty(gameEntity.getApk().get(0).getGhVersion()) && !PackageUtils.isSignature(context, gameEntity.getApk().get(0).getPackageName())) { downloadBtn.setText("插件化"); DownloadEntity downloadEntity = DownloadManager.getInstance(context).getByPackage( diff --git a/app/src/main/java/com/gh/gamecenter/MainActivity.java b/app/src/main/java/com/gh/gamecenter/MainActivity.java index c09e8b9a9a..8d8cf08066 100644 --- a/app/src/main/java/com/gh/gamecenter/MainActivity.java +++ b/app/src/main/java/com/gh/gamecenter/MainActivity.java @@ -806,9 +806,11 @@ public class MainActivity extends BaseFragmentActivity implements OnClickListene && gameEntity.getApk() != null) { map = info.getPackageNames(); for (String key : map.keySet()) { - if (map.get(key) && !PackageUtils.isSignature(this, key)) { + if (map.get(key)) { for (ApkEntity apkEntity : gameEntity.getApk()) { - if (apkEntity.getPackageName().equals(key)) { + if (apkEntity.getPackageName().equals(key) + && !TextUtils.isEmpty(apkEntity.getGhVersion()) + && !PackageUtils.isSignature(this, apkEntity.getPackageName())) { GameUpdateEntity gameUpdateEntity = new GameUpdateEntity(); gameUpdateEntity.setId(gameEntity.getId()); gameUpdateEntity.setIcon(gameEntity.getIcon()); diff --git a/app/src/main/java/com/gh/gamecenter/adapter/PlatformAdapter.java b/app/src/main/java/com/gh/gamecenter/adapter/PlatformAdapter.java index f952e93cb0..7eb905d6c6 100644 --- a/app/src/main/java/com/gh/gamecenter/adapter/PlatformAdapter.java +++ b/app/src/main/java/com/gh/gamecenter/adapter/PlatformAdapter.java @@ -201,6 +201,7 @@ public class PlatformAdapter extends RecyclerView.Adapter { if (downloadEntity == null) { viewHolder.download_item_progressbar.setProgress(1000); if (gameEntity.getTag() != null && gameEntity.getTag().size() != 0 + && !TextUtils.isEmpty(apkEntity.getGhVersion()) && !PackageUtils.isSignature(context, apkEntity.getPackageName())) { viewHolder.download_item_tv_status.setText("插件化"); downloadEntity = DownloadManager.getInstance(context).getByPackage(apkEntity.getPackageName()); From 0479cfca18f23d99b1d689714a18132ed2af3a1c Mon Sep 17 00:00:00 2001 From: huangzhuanghua <401742778@qq.com> Date: Wed, 19 Oct 2016 14:16:22 +0800 Subject: [PATCH 4/6] =?UTF-8?q?=E6=B7=BB=E5=8A=A0=E9=93=BE=E6=8E=A5404=20N?= =?UTF-8?q?ot=20Found=20=E5=A4=84=E7=90=86?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../main/java/com/gh/base/DetailActivity.java | 1 + .../java/com/gh/download/DownloadStatus.java | 2 +- .../java/com/gh/download/DownloadTask.java | 3 +- .../java/com/gh/download/DownloadThread.java | 83 ++++++++++--------- .../java/com/gh/gamecenter/MainActivity.java | 9 +- .../gamecenter/adapter/PlatformAdapter.java | 3 +- 6 files changed, 60 insertions(+), 41 deletions(-) diff --git a/app/src/main/java/com/gh/base/DetailActivity.java b/app/src/main/java/com/gh/base/DetailActivity.java index 4e5d165b09..11d68890f5 100644 --- a/app/src/main/java/com/gh/base/DetailActivity.java +++ b/app/src/main/java/com/gh/base/DetailActivity.java @@ -276,6 +276,7 @@ public abstract class DetailActivity extends BaseActivity implements View.OnClic break; case cancel: case hijack: + case notfound: initDownload(false); break; default: diff --git a/app/src/main/java/com/gh/download/DownloadStatus.java b/app/src/main/java/com/gh/download/DownloadStatus.java index b38dd71a5f..bd331efb27 100644 --- a/app/src/main/java/com/gh/download/DownloadStatus.java +++ b/app/src/main/java/com/gh/download/DownloadStatus.java @@ -1,5 +1,5 @@ package com.gh.download; public enum DownloadStatus { - add, pause, cancel, downloading, done, waiting, resume, timeout, neterror, hijack + add, pause, cancel, downloading, done, waiting, resume, timeout, neterror, hijack, notfound } diff --git a/app/src/main/java/com/gh/download/DownloadTask.java b/app/src/main/java/com/gh/download/DownloadTask.java index 7a8d7b7201..cd287ba6dc 100644 --- a/app/src/main/java/com/gh/download/DownloadTask.java +++ b/app/src/main/java/com/gh/download/DownloadTask.java @@ -119,7 +119,8 @@ public class DownloadTask implements DownloadListener { @Override public void onStatusChanged(DownloadStatus status, String error) { if (status == DownloadStatus.cancel - || status == DownloadStatus.hijack) { + || status == DownloadStatus.hijack + || status == DownloadStatus.notfound) { entry.setProgress(0); entry.setPercent(0); FileUtils.deleteFile(entry.getPath()); diff --git a/app/src/main/java/com/gh/download/DownloadThread.java b/app/src/main/java/com/gh/download/DownloadThread.java index 9398640d06..b8e1cae317 100644 --- a/app/src/main/java/com/gh/download/DownloadThread.java +++ b/app/src/main/java/com/gh/download/DownloadThread.java @@ -4,6 +4,7 @@ import android.content.Context; import android.text.TextUtils; import android.util.Log; +import com.android.volley.TimeoutError; import com.gh.common.util.HttpsUtils; import com.gh.common.util.Utils; @@ -15,6 +16,7 @@ import java.io.File; import java.io.FileOutputStream; import java.net.HttpURLConnection; import java.net.URL; +import java.util.concurrent.TimeoutException; public class DownloadThread extends Thread { @@ -92,11 +94,20 @@ public class DownloadThread extends Thread { "startPosition-->" + targetFile.length()); //设置自动重定向 connection.setInstanceFollowRedirects(true); + + code = connection.getResponseCode(); + } + if (code == HttpStatus.SC_NOT_FOUND) { + // 404 Not Found + listener.onStatusChanged(DownloadStatus.notfound); + Utils.log(DownloadThread.class.getSimpleName(), + "error-->404 Not Found"); + return; } BufferedInputStream bis = new BufferedInputStream(connection.getInputStream()); BufferedOutputStream bos = new BufferedOutputStream(fileOutputStream); - long conentLength = connection.getContentLength(); + String eTag = connection.getHeaderField("ETag"); if (!TextUtils.isEmpty(eTag) && eTag.startsWith("\"") && eTag.endsWith("\"")) { eTag = eTag.substring(1, eTag.length() - 1); @@ -109,45 +120,43 @@ public class DownloadThread extends Thread { listener.onStatusChanged(DownloadStatus.hijack); Utils.log(DownloadThread.class.getSimpleName(), "error-->链接被劫持"); - interrupt(); - } else { - // 第一次下载记录文件长度 - if (entry.getSize() == 0) { - entry.setSize(conentLength); - DownloadDao.getInstance(context).newOrUpdate(entry); - Utils.log(DownloadThread.class.getSimpleName(), - "记录第一次长度"); - } - Utils.log(DownloadThread.class.getSimpleName(), - "progress:" + entry.getProgress() + "/curfilesize:" - + targetFile.length() + "=====contentLength:" - + conentLength + "/ totalSize:" + entry.getSize()); - - byte[] buffer = new byte[2048]; - int len; - while ((len = bis.read(buffer)) != -1) { - bos.write(buffer, 0, len); - listener.onProgressChanged(targetFile.length(), len); - if (status == DownloadStatus.pause - || status == DownloadStatus.cancel) { - listener.onStatusChanged(status); - break; - } - } - bos.flush(); - Utils.log(DownloadThread.class.getSimpleName(), - "flush==>" + targetFile.length() + ",progress==>" - + entry.getProgress() + ",size==>" + entry.getSize()); + return; + } - bis.close(); - bos.close(); -// if (status != DownloadStatus.pause && status != DownloadStatus.cancel) { -// listener.onStatusChanged(DownloadStatus.done); -// } - if (targetFile.length() == entry.getSize()) { - listener.onStatusChanged(DownloadStatus.done); + long conentLength = connection.getContentLength(); + // 第一次下载记录文件长度 + if (entry.getSize() == 0) { + entry.setSize(conentLength); + DownloadDao.getInstance(context).newOrUpdate(entry); + Utils.log(DownloadThread.class.getSimpleName(), + "记录第一次长度"); + } + Utils.log(DownloadThread.class.getSimpleName(), + "progress:" + entry.getProgress() + "/curfilesize:" + + targetFile.length() + "=====contentLength:" + + conentLength + "/ totalSize:" + entry.getSize()); + + byte[] buffer = new byte[2048]; + int len; + while ((len = bis.read(buffer)) != -1) { + bos.write(buffer, 0, len); + listener.onProgressChanged(targetFile.length(), len); + if (status == DownloadStatus.pause + || status == DownloadStatus.cancel) { + listener.onStatusChanged(status); + break; } } + bos.flush(); + Utils.log(DownloadThread.class.getSimpleName(), + "flush==>" + targetFile.length() + ",progress==>" + + entry.getProgress() + ",size==>" + entry.getSize()); + + bis.close(); + bos.close(); + if (targetFile.length() == entry.getSize()) { + listener.onStatusChanged(DownloadStatus.done); + } } catch (Exception e) { String errorMsg = Log.getStackTraceString(e); diff --git a/app/src/main/java/com/gh/gamecenter/MainActivity.java b/app/src/main/java/com/gh/gamecenter/MainActivity.java index 8d8cf08066..6eba09cdf3 100644 --- a/app/src/main/java/com/gh/gamecenter/MainActivity.java +++ b/app/src/main/java/com/gh/gamecenter/MainActivity.java @@ -141,10 +141,17 @@ public class MainActivity extends BaseFragmentActivity implements OnClickListene private DataWatcher dataWatcher = new DataWatcher() { @Override public void onDataChanged(DownloadEntity downloadEntity) { - // 链接被劫持 if (DownloadStatus.hijack.equals(downloadEntity.getStatus())) { + // 链接被劫持 processHijack(downloadEntity); return; + } else if (DownloadStatus.notfound.equals(downloadEntity.getStatus())) { + // 404 Not Found + // 删除任务 + downloadEntity.setStatus(DownloadStatus.cancel); + DownloadManager.getInstance(getApplicationContext()).cancel(downloadEntity.getUrl()); + toast("该链接已失效!请联系管理员。"); + return; } else if (DownloadStatus.neterror.equals(downloadEntity.getStatus()) || DownloadStatus.timeout.equals(downloadEntity.getStatus())) { toast("网络不稳定,下载任务已暂停"); diff --git a/app/src/main/java/com/gh/gamecenter/adapter/PlatformAdapter.java b/app/src/main/java/com/gh/gamecenter/adapter/PlatformAdapter.java index 7eb905d6c6..a854f100b1 100644 --- a/app/src/main/java/com/gh/gamecenter/adapter/PlatformAdapter.java +++ b/app/src/main/java/com/gh/gamecenter/adapter/PlatformAdapter.java @@ -238,7 +238,8 @@ public class PlatformAdapter extends RecyclerView.Adapter { DownloadEntity downloadEntity = entryMap.get(apkEntity.getUrl()); if (downloadEntity == null || downloadEntity.getStatus().equals(DownloadStatus.cancel) - || downloadEntity.getStatus().equals(DownloadStatus.hijack)) { + || downloadEntity.getStatus().equals(DownloadStatus.hijack) + || downloadEntity.getStatus().equals(DownloadStatus.notfound)) { int id = PlatformUtils.getInstance(context).getPlatformPic( apkEntity.getPlatform()); if (id != 0) { From ded2fcdc7d83e4b90670214b1baa95c62993a78f Mon Sep 17 00:00:00 2001 From: huangzhuanghua <401742778@qq.com> Date: Wed, 19 Oct 2016 15:22:24 +0800 Subject: [PATCH 5/6] =?UTF-8?q?=E6=B7=BB=E5=8A=A0=E9=93=BE=E6=8E=A5?= =?UTF-8?q?=E4=B8=BA=E7=A9=BA=E7=9A=84=E6=83=85=E5=86=B5=E5=A4=84=E7=90=86?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/src/main/java/com/gh/download/DownloadThread.java | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/app/src/main/java/com/gh/download/DownloadThread.java b/app/src/main/java/com/gh/download/DownloadThread.java index b8e1cae317..d3bf81857d 100644 --- a/app/src/main/java/com/gh/download/DownloadThread.java +++ b/app/src/main/java/com/gh/download/DownloadThread.java @@ -56,6 +56,12 @@ public class DownloadThread extends Thread { fileOutputStream = new FileOutputStream(entry.getPath()); } + if (TextUtils.isEmpty(entry.getUrl())) { + listener.onStatusChanged(DownloadStatus.notfound); + Utils.log(DownloadThread.class.getSimpleName(), + "error-->url is empty"); + return; + } URL url = new URL(entry.getUrl()); Utils.log("url = " + entry.getUrl()); From 35b62c2bc6a69af32f53037809db1f9a6b34c91b Mon Sep 17 00:00:00 2001 From: huangzhuanghua <401742778@qq.com> Date: Thu, 20 Oct 2016 14:23:56 +0800 Subject: [PATCH 6/6] =?UTF-8?q?=E6=B7=BB=E5=8A=A0=E5=AE=89=E8=A3=85?= =?UTF-8?q?=E6=B8=B8=E6=88=8F=E5=90=8E=E6=A3=80=E6=9F=A5=E6=98=AF=E5=90=A6?= =?UTF-8?q?=E5=8F=AF=E4=BB=A5=E8=BF=9B=E8=A1=8C=E6=8F=92=E4=BB=B6=E5=8C=96?= =?UTF-8?q?=E5=8A=9F=E8=83=BD=E3=80=81=E6=A3=80=E6=9F=A5GamEntity=20getEnt?= =?UTF-8?q?ryMao=E6=96=B9=E6=B3=95=E8=BF=94=E5=9B=9Enull=E5=88=A4=E6=96=AD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../main/java/com/gh/base/HomeFragment.java | 1 - .../com/gh/common/util/DownloadItemUtils.java | 10 +- .../java/com/gh/download/DownloadThread.java | 37 ++-- .../java/com/gh/gamecenter/MainActivity.java | 184 +++++++++--------- .../com/gh/gamecenter/SubjectActivity.java | 4 +- .../gamecenter/adapter/PlatformAdapter.java | 3 +- .../com/gh/gamecenter/db/DatabaseHelper.java | 3 - .../gh/gamecenter/db/SuspectedGameDao.java | 99 ---------- .../gamecenter/db/info/SuspectedGameInfo.java | 54 ----- .../download/GameDownLoadFragment.java | 43 ++-- .../download/GameUpdateAdapter.java | 171 ++++++++-------- .../download/GameUpdateFragment.java | 55 +++--- .../gamecenter/entity/GameUpdateEntity.java | 19 -- .../com/gh/gamecenter/game/Game1Fragment.java | 36 ++-- .../gamecenter/game/Game1FragmentAdapter.java | 28 +-- .../com/gh/gamecenter/game/Game2Fragment.java | 4 +- .../com/gh/gamecenter/game/Game3Fragment.java | 4 +- .../gh/gamecenter/manager/PackageManager.java | 3 +- .../manager/SuspectedGameManager.java | 42 ---- .../gamecenter/personal/ConcernFragment.java | 4 +- 20 files changed, 314 insertions(+), 490 deletions(-) delete mode 100644 app/src/main/java/com/gh/gamecenter/db/SuspectedGameDao.java delete mode 100644 app/src/main/java/com/gh/gamecenter/db/info/SuspectedGameInfo.java delete mode 100644 app/src/main/java/com/gh/gamecenter/manager/SuspectedGameManager.java diff --git a/app/src/main/java/com/gh/base/HomeFragment.java b/app/src/main/java/com/gh/base/HomeFragment.java index 419b70be49..ac137cc18d 100644 --- a/app/src/main/java/com/gh/base/HomeFragment.java +++ b/app/src/main/java/com/gh/base/HomeFragment.java @@ -196,7 +196,6 @@ public class HomeFragment extends Fragment implements View.OnClickListener { } public void onEventMainThread(EBDownloadStatus status) { - downloadHint = (TextView) view.findViewById(R.id.action_tip); int updateSize = PackageManager.getUpdateListSize(); int downloadSize = DownloadManager.getInstance(getActivity()).getAll().size(); if (downloadSize != 0) { 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 3cb6772885..6ad6574943 100644 --- a/app/src/main/java/com/gh/common/util/DownloadItemUtils.java +++ b/app/src/main/java/com/gh/common/util/DownloadItemUtils.java @@ -120,7 +120,8 @@ public class DownloadItemUtils { downloadBtn.setText("插件化"); DownloadEntity downloadEntity = DownloadManager.getInstance(context).getByPackage( gameEntity.getApk().get(0).getPackageName()); - if (downloadEntity == null) { + if (downloadEntity == null + || downloadEntity.getUrl().equals(gameEntity.getApk().get(0).getUrl())) { downloadBtn.setClickable(true); downloadBtn.setBackgroundResource(R.drawable.game_item_btn_plugin_style); } else { @@ -138,7 +139,8 @@ public class DownloadItemUtils { downloadBtn.setText("插件化"); DownloadEntity downloadEntity = DownloadManager.getInstance(context).getByPackage( gameEntity.getApk().get(0).getPackageName()); - if (downloadEntity == null) { + if (downloadEntity == null + || downloadEntity.getUrl().equals(gameEntity.getApk().get(0).getUrl())) { downloadBtn.setClickable(true); downloadBtn.setBackgroundResource(R.drawable.game_item_btn_plugin_style); } else { @@ -603,8 +605,8 @@ public class DownloadItemUtils { if (FileUtils.isEmptyFile(path)) { Toast.makeText(context, "解析包出错(可能被误删了),请重新下载", Toast.LENGTH_SHORT).show(); DownloadManager.getInstance(context).cancel(downloadEntity.getUrl()); - if (gameEntity.getEntryMap() != null && !gameEntity.getEntryMap().isEmpty()) { - gameEntity.getEntryMap().remove(gameEntity.getEntryMap().keyAt(0)); + if (gameEntity.getEntryMap() != null) { + gameEntity.getEntryMap().remove(gameEntity.getApk().get(0).getPlatform()); } adapter.notifyItemChanged(position); } else { diff --git a/app/src/main/java/com/gh/download/DownloadThread.java b/app/src/main/java/com/gh/download/DownloadThread.java index d3bf81857d..27ec069a5f 100644 --- a/app/src/main/java/com/gh/download/DownloadThread.java +++ b/app/src/main/java/com/gh/download/DownloadThread.java @@ -4,7 +4,6 @@ import android.content.Context; import android.text.TextUtils; import android.util.Log; -import com.android.volley.TimeoutError; import com.gh.common.util.HttpsUtils; import com.gh.common.util.Utils; @@ -14,9 +13,9 @@ import java.io.BufferedInputStream; import java.io.BufferedOutputStream; import java.io.File; import java.io.FileOutputStream; +import java.io.IOException; import java.net.HttpURLConnection; import java.net.URL; -import java.util.concurrent.TimeoutException; public class DownloadThread extends Thread { @@ -40,6 +39,8 @@ public class DownloadThread extends Thread { public void run() { super.run(); + BufferedInputStream bis = null; + BufferedOutputStream bos = null; try { File targetFile = new File(entry.getPath()); if (!targetFile.exists()) { @@ -49,13 +50,6 @@ public class DownloadThread extends Thread { } } - FileOutputStream fileOutputStream; - if (targetFile.length() > 0) { - fileOutputStream = new FileOutputStream(entry.getPath(), true); - } else { - fileOutputStream = new FileOutputStream(entry.getPath()); - } - if (TextUtils.isEmpty(entry.getUrl())) { listener.onStatusChanged(DownloadStatus.notfound); Utils.log(DownloadThread.class.getSimpleName(), @@ -111,8 +105,12 @@ public class DownloadThread extends Thread { return; } - BufferedInputStream bis = new BufferedInputStream(connection.getInputStream()); - BufferedOutputStream bos = new BufferedOutputStream(fileOutputStream); + bis = new BufferedInputStream(connection.getInputStream()); + if (targetFile.length() > 0) { + bos = new BufferedOutputStream(new FileOutputStream(entry.getPath(), true)); + } else { + bos = new BufferedOutputStream(new FileOutputStream(entry.getPath())); + } String eTag = connection.getHeaderField("ETag"); if (!TextUtils.isEmpty(eTag) && eTag.startsWith("\"") && eTag.endsWith("\"")) { @@ -158,8 +156,6 @@ public class DownloadThread extends Thread { "flush==>" + targetFile.length() + ",progress==>" + entry.getProgress() + ",size==>" + entry.getSize()); - bis.close(); - bos.close(); if (targetFile.length() == entry.getSize()) { listener.onStatusChanged(DownloadStatus.done); } @@ -174,6 +170,21 @@ public class DownloadThread extends Thread { } Utils.log(DownloadThread.class.getSimpleName(), "exception-->" + e.toString()); + } finally { + if (bis != null) { + try { + bis.close(); + } catch (IOException e) { + e.printStackTrace(); + } + } + if (bos != null) { + try { + bos.close(); + } catch (IOException e) { + e.printStackTrace(); + } + } } } diff --git a/app/src/main/java/com/gh/gamecenter/MainActivity.java b/app/src/main/java/com/gh/gamecenter/MainActivity.java index 6eba09cdf3..69eefb2de4 100644 --- a/app/src/main/java/com/gh/gamecenter/MainActivity.java +++ b/app/src/main/java/com/gh/gamecenter/MainActivity.java @@ -53,7 +53,6 @@ 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.GameDigestEntity; @@ -71,7 +70,6 @@ import com.gh.gamecenter.manager.DataCollectionManager; import com.gh.gamecenter.manager.FilterManager; import com.gh.gamecenter.manager.GameManager; import com.gh.gamecenter.manager.PackageManager; -import com.gh.gamecenter.manager.SuspectedGameManager; import com.gh.gamecenter.news.NewsFragment; import com.gh.gamecenter.personal.PersonalFragment; import com.gh.gamecenter.volley.extended.JsonArrayExtendedRequest; @@ -351,9 +349,14 @@ public class MainActivity extends BaseFragmentActivity implements OnClickListene } } if (downloadEntity != null) { - String msg = "《" + downloadEntity.getName() + "-" - + PlatformUtils.getInstance(getApplicationContext()).getPlatformName(downloadEntity.getPlatform()) - + "》已下载完但还未安装,是否立即安装?"; + String msg; + if (downloadEntity.isPlugin()) { + msg = "《" + downloadEntity.getName() + "-" + + PlatformUtils.getInstance(getApplicationContext()).getPlatformName(downloadEntity.getPlatform()) + + "》已下载完但还未安装,是否立即安装?"; + } else { + msg = "《" + downloadEntity.getName() + "》已下载完但还未安装,是否立即安装?"; + } final String path = downloadEntity.getPath(); DialogUtils.showWarningDialog(this, "提示", msg, "直接退出", "立即安装", new DialogUtils.ConfiremListener() { @@ -563,10 +566,6 @@ public class MainActivity extends BaseFragmentActivity implements OnClickListene } private void updateConcern() { - // 移除疑似游戏数据库中所有数据 - SuspectedGameManager suspectedGameManager = new SuspectedGameManager(getApplicationContext()); - suspectedGameManager.deleteAll(); - ArrayList concernIdList = new ArrayList<>(); for (ConcernInfo entity : concernManager.getAllConcern()) { concernIdList.add(entity.getId()); @@ -719,43 +718,41 @@ public class MainActivity extends BaseFragmentActivity implements OnClickListene } private void checkGameUpdate() { - ArrayList list = new ArrayList<>(); List infos = concernManager.getInstalledGame(); for (ConcernInfo info : infos) { for (String packageName : info.getPackageNames().keySet()) { if (info.getPackageNames().get(packageName) && PackageUtils.getMetaData(this, packageName, "gh_version") != null) { - list.add(packageName); + checkGameUpdate(packageName); } } } + } - Object gh_id; - for (String packageName : list) { - gh_id = PackageUtils.getMetaData(this, packageName, "gh_id"); - String url; - if (gh_id == null) { - url = Config.HOST + "update/package/" + packageName; - } else { - url = Config.HOST + "update/game/" + gh_id + "/package/" + packageName; - } - JsonObjectExtendedRequest request = new JsonObjectExtendedRequest(url, - new Response.Listener() { - @Override - public void onResponse(JSONObject response) { - if (response.length() != 0) { - Gson gson = new Gson(); - GameUpdateEntity gameUpdateEntity = gson.fromJson( - response.toString(), GameUpdateEntity.class); - if (PackageUtils.isCanUpdate(MainActivity.this, gameUpdateEntity)) { - PackageManager.addUpdate(gameUpdateEntity); - EventBus.getDefault().post(new EBDownloadStatus("update")); - } + private void checkGameUpdate(String packageName) { + Object gh_id = PackageUtils.getMetaData(this, packageName, "gh_id"); + String url; + if (gh_id == null) { + url = Config.HOST + "update/package/" + packageName; + } else { + url = Config.HOST + "update/game/" + gh_id + "/package/" + packageName; + } + JsonObjectExtendedRequest request = new JsonObjectExtendedRequest(url, + new Response.Listener() { + @Override + public void onResponse(JSONObject response) { + if (response.length() != 0) { + Gson gson = new Gson(); + GameUpdateEntity gameUpdateEntity = gson.fromJson( + response.toString(), GameUpdateEntity.class); + if (PackageUtils.isCanUpdate(MainActivity.this, gameUpdateEntity)) { + PackageManager.addUpdate(gameUpdateEntity); + EventBus.getDefault().post(new EBDownloadStatus("update")); } } - }, null); - AppController.addToRequestQueue(request, TAG); - } + } + }, null); + AppController.addToRequestQueue(request, TAG); } private int count; @@ -818,22 +815,7 @@ public class MainActivity extends BaseFragmentActivity implements OnClickListene if (apkEntity.getPackageName().equals(key) && !TextUtils.isEmpty(apkEntity.getGhVersion()) && !PackageUtils.isSignature(this, apkEntity.getPackageName())) { - 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); + PackageManager.addUpdate(getGameUpdateEntity(gameEntity, apkEntity)); break; } } @@ -848,6 +830,24 @@ public class MainActivity extends BaseFragmentActivity implements OnClickListene EventBus.getDefault().post(new EBDownloadStatus("plugin")); } + private GameUpdateEntity getGameUpdateEntity(GameEntity gameEntity, ApkEntity apkEntity) { + 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()); + return gameUpdateEntity; + } + @Override public void onWindowFocusChanged(boolean hasFocus) { super.onWindowFocusChanged(hasFocus); @@ -1406,7 +1406,6 @@ public class MainActivity extends BaseFragmentActivity implements OnClickListene DownloadManager.getInstance(getApplicationContext()).cancel( mDownloadEntity.getUrl(), sp.getBoolean("autodelete", true)); } - } else if ("卸载".equals(busFour.getType())) { Map kv6 = new HashMap<>(); kv6.put("安装或卸载", "卸载完成"); @@ -1417,45 +1416,19 @@ public class MainActivity extends BaseFragmentActivity implements OnClickListene } if ("安装".equals(busFour.getType())) { GameManager gameManager = new GameManager(getApplicationContext()); - GameInfo gameEntity = gameManager.findGame(packageName); - if (gameEntity != null) { - concernManager.updateByEntity(gameEntity); - } else { - FilterManager filterManager = new FilterManager(getApplicationContext()); - if (!filterManager.isFilter(packageName)) { - SuspectedGameManager suspectedGameManager = new SuspectedGameManager(getApplicationContext()); - suspectedGameManager.addGame(new SuspectedGameInfo( - packageName, System.currentTimeMillis())); - } + GameInfo gameInfo = gameManager.findGame(packageName); + if (gameInfo != null) { + concernManager.updateByEntity(gameInfo); } } else if ("卸载".equals(busFour.getType())) { FilterManager filterManager = new FilterManager(getApplicationContext()); if (!filterManager.isFilter(packageName)) { - SuspectedGameManager suspectedGameManager = new SuspectedGameManager(getApplicationContext()); - suspectedGameManager.deleteSuspectedGame(packageName); - concernManager.updateByPackageName(packageName); } } - if ("卸载".equals(busFour.getType())) { - ArrayList list = PackageManager.getUpdateList(); - GameUpdateEntity game; - int index = -1; - for (int i = 0, size = list.size(); i < size; i++) { - game = list.get(i); - if (!game.isPluggable()) { - continue; - } - if (game.getPackageName().equals(packageName)) { - index = i; - break; - } - } - if (index != -1) { - PackageManager.removeUpdate(packageName); - } + if ("卸载".equals(busFour.getType()) || "安装".equals(busFour.getType())) { + PackageManager.removeUpdate(packageName); } - if ("安装".equals(busFour.getType())) { // 安装后关注游戏 JsonArrayExtendedRequest request = new JsonArrayExtendedRequest( @@ -1473,7 +1446,11 @@ public class MainActivity extends BaseFragmentActivity implements OnClickListene gameInfo.setPackageName(packageName); gameInfo.setGameName(gameDigestEntity.getName()); concernManager.updateByEntity(gameInfo); - concernGame(gameDigestEntity.getId()); + concernGame(gameDigestEntity.getId(), packageName); + if (PackageUtils.getMetaData(getApplicationContext(), + packageName, "gh_version") != null) { + checkGameUpdate(packageName); + } } } } @@ -1487,20 +1464,35 @@ public class MainActivity extends BaseFragmentActivity implements OnClickListene DataCollectionManager.onEvent(this, "inorunstall", map); } - private void concernGame(String id) { - if (!concernManager.isConcern(id)) { - JsonObjectExtendedRequest request = new JsonObjectExtendedRequest( - Config.HOST + "game/" + id + "/digest", - new Response.Listener() { - @Override - public void onResponse(JSONObject response) { - Gson gson = new Gson(); - GameEntity gameEntity = gson.fromJson(response.toString(), GameEntity.class); + private void concernGame(final String id, final String packageName) { + JsonObjectExtendedRequest request = new JsonObjectExtendedRequest( + Config.HOST + "game/" + id + "/digest", + new Response.Listener() { + @Override + public void onResponse(JSONObject response) { + Gson gson = new Gson(); + GameEntity gameEntity = gson.fromJson(response.toString(), GameEntity.class); + GameManager manager = new GameManager(getApplicationContext()); + manager.addOrUpdate(gameEntity.getApk(), gameEntity.getId(), gameEntity.getName()); + if (!concernManager.isConcern(id)) { concernManager.addByEntity(gameEntity); } - }, null); - AppController.addToRequestQueue(request, TAG); - } + // 检查是否能插件化 + if (gameEntity.getTag() != null && gameEntity.getTag().size() != 0 + && gameEntity.getApk() != null) { + for (ApkEntity apkEntity : gameEntity.getApk()) { + if (apkEntity.getPackageName().equals(packageName) + && !TextUtils.isEmpty(apkEntity.getGhVersion()) + && !PackageUtils.isSignature(getApplicationContext(), apkEntity.getPackageName())) { + PackageManager.addUpdate(getGameUpdateEntity(gameEntity, apkEntity)); + EventBus.getDefault().post(new EBDownloadStatus("plugin")); + break; + } + } + } + } + }, null); + AppController.addToRequestQueue(request, TAG); } @Override diff --git a/app/src/main/java/com/gh/gamecenter/SubjectActivity.java b/app/src/main/java/com/gh/gamecenter/SubjectActivity.java index 5c0297e988..e3ff7248f4 100644 --- a/app/src/main/java/com/gh/gamecenter/SubjectActivity.java +++ b/app/src/main/java/com/gh/gamecenter/SubjectActivity.java @@ -138,7 +138,9 @@ public class SubjectActivity extends BaseActivity { gameEntity = adapter.getSubjectList().get(location); for (ApkEntity apkEntity : gameEntity.getApk()) { if (apkEntity.getPackageName().equals(busFour.getPackageName())) { - gameEntity.getEntryMap().remove(apkEntity.getPlatform()); + if (gameEntity.getEntryMap() != null) { + gameEntity.getEntryMap().remove(apkEntity.getPlatform()); + } adapter.notifyItemChanged(location); break; } diff --git a/app/src/main/java/com/gh/gamecenter/adapter/PlatformAdapter.java b/app/src/main/java/com/gh/gamecenter/adapter/PlatformAdapter.java index a854f100b1..facebed785 100644 --- a/app/src/main/java/com/gh/gamecenter/adapter/PlatformAdapter.java +++ b/app/src/main/java/com/gh/gamecenter/adapter/PlatformAdapter.java @@ -205,7 +205,8 @@ public class PlatformAdapter extends RecyclerView.Adapter { && !PackageUtils.isSignature(context, apkEntity.getPackageName())) { viewHolder.download_item_tv_status.setText("插件化"); downloadEntity = DownloadManager.getInstance(context).getByPackage(apkEntity.getPackageName()); - if (downloadEntity == null) { + if (downloadEntity == null + || downloadEntity.getUrl().equals(apkEntity.getUrl())) { viewHolder.itemView.setClickable(true); viewHolder.download_item_progressbar.setProgress(1000); } else { diff --git a/app/src/main/java/com/gh/gamecenter/db/DatabaseHelper.java b/app/src/main/java/com/gh/gamecenter/db/DatabaseHelper.java index 51f65a6573..86a48e0827 100644 --- a/app/src/main/java/com/gh/gamecenter/db/DatabaseHelper.java +++ b/app/src/main/java/com/gh/gamecenter/db/DatabaseHelper.java @@ -10,7 +10,6 @@ import com.gh.gamecenter.db.info.DataCollectionInfo; import com.gh.gamecenter.db.info.FilterInfo; import com.gh.gamecenter.db.info.GameInfo; import com.gh.gamecenter.db.info.SearchHistoryInfo; -import com.gh.gamecenter.db.info.SuspectedGameInfo; import com.j256.ormlite.android.apptools.OrmLiteSqliteOpenHelper; import com.j256.ormlite.dao.Dao; import com.j256.ormlite.support.ConnectionSource; @@ -57,7 +56,6 @@ public class DatabaseHelper extends OrmLiteSqliteOpenHelper { TableUtils.createTable(connectionSource, ConcernInfo.class); TableUtils.createTable(connectionSource, SearchHistoryInfo.class); TableUtils.createTable(connectionSource, GameInfo.class); - TableUtils.createTable(connectionSource, SuspectedGameInfo.class); TableUtils.createTable(connectionSource, FilterInfo.class); TableUtils.createTable(connectionSource, DataCollectionInfo.class); } catch (SQLException e) { @@ -75,7 +73,6 @@ public class DatabaseHelper extends OrmLiteSqliteOpenHelper { TableUtils.dropTable(connectionSource, ConcernInfo.class, true); TableUtils.dropTable(connectionSource, SearchHistoryInfo.class, true); TableUtils.dropTable(connectionSource, GameInfo.class, true); - TableUtils.dropTable(connectionSource, SuspectedGameInfo.class, true); TableUtils.dropTable(connectionSource, FilterInfo.class, true); TableUtils.dropTable(connectionSource, DataCollectionInfo.class, true); onCreate(database, connectionSource); diff --git a/app/src/main/java/com/gh/gamecenter/db/SuspectedGameDao.java b/app/src/main/java/com/gh/gamecenter/db/SuspectedGameDao.java deleted file mode 100644 index 916c72a3f5..0000000000 --- a/app/src/main/java/com/gh/gamecenter/db/SuspectedGameDao.java +++ /dev/null @@ -1,99 +0,0 @@ -package com.gh.gamecenter.db; - -import android.content.Context; - -import com.gh.gamecenter.db.info.SuspectedGameInfo; -import com.j256.ormlite.dao.Dao; - -import java.sql.SQLException; -import java.util.List; - -public class SuspectedGameDao { - - private DatabaseHelper helper; - private Dao dao; - - public SuspectedGameDao(Context context) { - try { - helper = DatabaseHelper.getHelper(context); - dao = helper.getDao(SuspectedGameInfo.class); - } catch (SQLException e) { - - e.printStackTrace(); - } - } - - /** - * 添加一个疑似游戏 - */ - public void add(SuspectedGameInfo entity) { - try { - dao.create(entity); - } catch (SQLException e) { - - e.printStackTrace(); - } - } - - /** - * 删除一个疑似游戏 - */ - public void delete(String packageName) { - try { - dao.deleteById(packageName); - } catch (SQLException e) { - - e.printStackTrace(); - } - } - - /** - * 根据包名获取某一个疑似游戏 - */ - public SuspectedGameInfo find(String packageName) { - try { - return dao.queryForId(packageName); - } catch (SQLException e) { - - e.printStackTrace(); - } - return null; - } - - /** - * 获取所有的疑似游戏 - */ - public List getAll() { - try { - return dao.queryForAll(); - } catch (SQLException e) { - - e.printStackTrace(); - } - return null; - } - - /** - * 更新疑似游戏 - */ - public void update(SuspectedGameInfo entity) { - try { - dao.update(entity); - } catch (SQLException e) { - - e.printStackTrace(); - } - } - - public void deleteAll() { - try { - List list = dao.queryForAll(); - for (int i = 0, size = list.size(); i < size; i++) { - dao.deleteById(list.get(i).getPackageName()); - } - } catch (SQLException e) { - - e.printStackTrace(); - } - } -} diff --git a/app/src/main/java/com/gh/gamecenter/db/info/SuspectedGameInfo.java b/app/src/main/java/com/gh/gamecenter/db/info/SuspectedGameInfo.java deleted file mode 100644 index 314c165077..0000000000 --- a/app/src/main/java/com/gh/gamecenter/db/info/SuspectedGameInfo.java +++ /dev/null @@ -1,54 +0,0 @@ -package com.gh.gamecenter.db.info; - -import com.j256.ormlite.field.DatabaseField; -import com.j256.ormlite.table.DatabaseTable; - -import java.io.Serializable; - -@DatabaseTable(tableName = "tb_suspectedgame") -public class SuspectedGameInfo implements Serializable { - - /** - * - */ - private static final long serialVersionUID = -5623387326449838895L; - - @DatabaseField(id = true, columnName = "packageName") - private String packageName; - - @DatabaseField(columnName = "time") - private long time; - - public SuspectedGameInfo() { - - } - - public SuspectedGameInfo(String packageName, long time) { - super(); - this.packageName = packageName; - this.time = time; - } - - public String getPackageName() { - return packageName; - } - - public void setPackageName(String packageName) { - this.packageName = packageName; - } - - public long getTime() { - return time; - } - - public void setTime(long time) { - this.time = time; - } - - @Override - public String toString() { - return "SuspectedGameEntity [packageName=" + packageName + ", time=" - + time + "]"; - } - -} 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 c4880adec4..4f4443e400 100644 --- a/app/src/main/java/com/gh/gamecenter/download/GameDownLoadFragment.java +++ b/app/src/main/java/com/gh/gamecenter/download/GameDownLoadFragment.java @@ -292,26 +292,31 @@ public class GameDownLoadFragment extends Fragment implements View.OnClickListen Integer location = adapter.getLocation(url); if (location != null) { if ("安装".equals(busFour.getType())) { - if (adapter.getDownloadingList().isEmpty() && adapter.getDoneList().size() == 1) { - adapter.getDoneList().remove(location.intValue()); - adapter.getLocationMap().clear(); - adapter.notifyDataSetChanged(); - EventBus.getDefault().post(new EBDownloadChanged("download", View.GONE, 0)); - if (reuse_nodata_skip.getVisibility() == View.GONE) { - reuse_nodata_skip.setVisibility(View.VISIBLE); + DownloadEntity downloadEntity = DownloadManager.getInstance(getActivity()).get(url); + if (downloadEntity == null + || !downloadEntity.isPlugin() // 不是插件游戏,自己删除数据库数据和安装包 + || PackageUtils.isSignature(getActivity(), packageName)) {// 是插件游戏,判断签名是否相同,是才删除数据库数据和安装包 + if (adapter.getDownloadingList().isEmpty() && adapter.getDoneList().size() == 1) { + adapter.getDoneList().remove(location.intValue()); + adapter.getLocationMap().clear(); + adapter.notifyDataSetChanged(); + EventBus.getDefault().post(new EBDownloadChanged("download", View.GONE, 0)); + if (reuse_nodata_skip.getVisibility() == View.GONE) { + reuse_nodata_skip.setVisibility(View.VISIBLE); + } + } else if (adapter.getDoneList().size() == 1) { + adapter.getDoneList().remove(location.intValue()); + adapter.initLocationMap(); + adapter.notifyItemRangeRemoved(0, 2); + EventBus.getDefault().post(new EBDownloadChanged("download", View.VISIBLE, + adapter.getDoneList().size() + adapter.getDownloadingList().size())); + } else { + adapter.getDoneList().remove(location.intValue()); + adapter.initLocationMap(); + adapter.notifyItemRemoved(location + 1); + EventBus.getDefault().post(new EBDownloadChanged("download", View.VISIBLE, + adapter.getDoneList().size() + adapter.getDownloadingList().size())); } - } else if (adapter.getDoneList().size() == 1) { - adapter.getDoneList().remove(location.intValue()); - adapter.initLocationMap(); - adapter.notifyItemRangeRemoved(0, 2); - EventBus.getDefault().post(new EBDownloadChanged("download", View.VISIBLE, - adapter.getDoneList().size() + adapter.getDownloadingList().size())); - } else { - adapter.getDoneList().remove(location.intValue()); - adapter.initLocationMap(); - adapter.notifyItemRemoved(location + 1); - EventBus.getDefault().post(new EBDownloadChanged("download", View.VISIBLE, - adapter.getDoneList().size() + adapter.getDownloadingList().size())); } } } 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 72721c5c6c..1a20d4d95c 100644 --- a/app/src/main/java/com/gh/gamecenter/download/GameUpdateAdapter.java +++ b/app/src/main/java/com/gh/gamecenter/download/GameUpdateAdapter.java @@ -5,8 +5,6 @@ import android.graphics.Color; import android.support.v4.util.ArrayMap; import android.support.v7.widget.RecyclerView; import android.text.TextUtils; -import android.util.SparseArray; -import android.util.SparseBooleanArray; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; @@ -29,6 +27,7 @@ import com.gh.common.view.CardLinearLayout; import com.gh.common.view.CardRelativeLayout; import com.gh.download.DownloadEntity; import com.gh.download.DownloadManager; +import com.gh.download.DownloadStatus; import com.gh.gamecenter.R; import com.gh.gamecenter.db.info.ConcernInfo; import com.gh.gamecenter.entity.GameUpdateEntity; @@ -61,10 +60,7 @@ public class GameUpdateAdapter extends RecyclerView.Adapter locationMap; - private ArrayMap packageNameMap; - private SparseBooleanArray successMap; - private SparseArray entryMap; + private ArrayMap> locationMap; private List updateList; @@ -82,9 +78,6 @@ public class GameUpdateAdapter extends RecyclerView.Adapter(); - packageNameMap = new ArrayMap<>(); - successMap = new SparseBooleanArray(); - entryMap = new SparseArray<>(); updateList = new ArrayList<>(); if (packageName != null) { @@ -92,16 +85,25 @@ public class GameUpdateAdapter extends RecyclerView.Adapter entries = DownloadManager.getInstance(context).getAll(); + // 初始化map + public void initLocationMap() { + locationMap.clear(); + + String packageName; + ArrayList list; 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 (DownloadEntity downloadEntity : entries) { - if (updateList.get(i).getUrl().equals(downloadEntity.getUrl())) { - entryMap.put(i, downloadEntity); - break; - } + packageName = updateList.get(i).getPackageName(); + list = locationMap.get(packageName); + if (list == null) { + list = new ArrayList<>(); + locationMap.put(packageName, list); } + list.add(i + 1); } } @@ -312,11 +315,12 @@ public class GameUpdateAdapter extends RecyclerView.Adapter getLocationMap() { + public ArrayMap> getLocationMap() { return locationMap; } - public SparseBooleanArray getSuccessMap() { - return successMap; - } - - public ArrayMap getPackageNameMap() { - return packageNameMap; - } - - public SparseArray getEntryMap() { - return entryMap; + public void removeUpdate(String packageName) { + for (int i = 0; i < updateList.size(); i++) { + if (updateList.get(i).getPackageName().equals(packageName)) { + updateList.remove(i); + if (updateList.isEmpty()) { + notifyItemRangeRemoved(0, 2); + break; + } + notifyItemRemoved(i + 1); + notifyItemChanged(0); + i--; + } + } } } 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 bda4105039..e5b0615e22 100644 --- a/app/src/main/java/com/gh/gamecenter/download/GameUpdateFragment.java +++ b/app/src/main/java/com/gh/gamecenter/download/GameUpdateFragment.java @@ -15,6 +15,7 @@ import android.widget.TextView; import com.gh.base.AppController; import com.gh.gamecenter.MainActivity; import com.gh.gamecenter.R; +import com.gh.gamecenter.entity.GameUpdateEntity; import com.gh.gamecenter.eventbus.EBDownloadChanged; import com.gh.gamecenter.eventbus.EBDownloadStatus; import com.gh.gamecenter.eventbus.EBMiPush; @@ -22,6 +23,8 @@ import com.gh.gamecenter.eventbus.EBPackage; import com.gh.gamecenter.eventbus.EBSkip; import com.gh.gamecenter.manager.PackageManager; +import java.util.ArrayList; + import de.greenrobot.event.EventBus; /** @@ -102,46 +105,36 @@ public class GameUpdateFragment extends Fragment { public void onEventMainThread(EBDownloadStatus status) { if ("delete".equals(status.getStatus())) { - String packageName = adapter.getPackageNameMap().get(status.getUrl()); - if (packageName != null) { - Integer location = adapter.getLocationMap().get(packageName); - adapter.getEntryMap().remove(location); - gameupdate_rv_show.getAdapter().notifyItemChanged(location + 1); + ArrayList locationList = adapter.getLocationMap().get(status.getPackageName()); + if (locationList != null) { + for (int location : locationList) { + gameupdate_rv_show.getAdapter().notifyItemChanged(location); + } gameupdate_rv_show.getAdapter().notifyItemChanged(0); } + } else if ("update".equals(status.getStatus()) || "plugin".equals(status.getStatus())) { + adapter.init(); + adapter.notifyDataSetChanged(); } } public void onEventMainThread(EBPackage busFour) { - if ("安装".equals(busFour.getType())) { - Integer location = adapter.getLocationMap().get(busFour.getPackageName()); - if (location != null) { - adapter.getSuccessMap().put(location, true); - EventBus.getDefault().post( - new EBDownloadChanged("update", View.VISIBLE, -1)); - gameupdate_rv_show.getAdapter().notifyItemChanged(location + 1); - gameupdate_rv_show.getAdapter().notifyItemChanged(0); - PackageManager.removeUpdate(busFour.getPackageName()); - } - } else if ("卸载".equals(busFour.getType())) { - Integer location = adapter.getLocationMap().get(busFour.getPackageName()); - if (location != null && adapter.getUpdateList().size() != 0) { - if (adapter.getUpdateList().get(location).isPluggable()) { - EventBus.getDefault().post( - new EBDownloadChanged("update", View.VISIBLE, -1)); - if (adapter.getUpdateList().size() == 1) { - adapter.getUpdateList().remove(location.intValue()); - adapter.notifyItemRangeRemoved(0, 2); - if (reuse_nodata_skip.getVisibility() == View.GONE) { - reuse_nodata_skip.setVisibility(View.VISIBLE); - } - } else { - adapter.getUpdateList().remove(location.intValue()); - adapter.notifyItemRemoved(location + 1); - adapter.notifyItemChanged(0); + ArrayList locationList = adapter.getLocationMap().get(busFour.getPackageName()); + if (locationList != null) { + for (int location : locationList) { + if ("安装".equals(busFour.getType())) { + gameupdate_rv_show.getAdapter().notifyItemChanged(location + 1); + gameupdate_rv_show.getAdapter().notifyItemChanged(0); + } else if ("卸载".equals(busFour.getType())) { + adapter.removeUpdate(busFour.getPackageName()); + if (adapter.getUpdateList().isEmpty()) { + reuse_nodata_skip.setVisibility(View.VISIBLE); } } + EventBus.getDefault().post( + new EBDownloadChanged("update", View.VISIBLE, -1)); } + adapter.initLocationMap(); } } 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 7bab6294f7..f24963b3fb 100644 --- a/app/src/main/java/com/gh/gamecenter/entity/GameUpdateEntity.java +++ b/app/src/main/java/com/gh/gamecenter/entity/GameUpdateEntity.java @@ -163,23 +163,4 @@ public class GameUpdateEntity { this.apk = apk; } - @Override - public String toString() { - return "GameUpdateEntity{" + - "id='" + id + '\'' + - ", name='" + name + '\'' + - ", icon='" + icon + '\'' + - ", packageName='" + packageName + '\'' + - ", size='" + size + '\'' + - ", version='" + version + '\'' + - ", ghVersion='" + ghVersion + '\'' + - ", url='" + url + '\'' + - ", platform='" + platform + '\'' + - ", isPluggable=" + isPluggable + - ", apk=" + apk + - ", etag='" + etag + '\'' + - ", brief='" + brief + '\'' + - ", tag=" + tag + - '}'; - } } 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 2b4a5f88b7..094479f3c6 100644 --- a/app/src/main/java/com/gh/gamecenter/game/Game1Fragment.java +++ b/app/src/main/java/com/gh/gamecenter/game/Game1Fragment.java @@ -139,13 +139,10 @@ public class Game1Fragment extends BaseFragment implements SwipeRefreshLayout.On Runnable initPluginRunnable = new Runnable() { @Override public void run() { - if (PackageManager.getPluggableSize() != 0 - && adapter.getPluginList().isEmpty()) { - if (adapter.isInitPlugin()) { - adapter.initPlugin(); - } else { - handler.postDelayed(initPluginRunnable, 100); - } + if (adapter.isInitPlugin()) { + handler.postDelayed(initPluginRunnable, 100); + } else { + adapter.initPlugin(); } } }; @@ -164,15 +161,21 @@ public class Game1Fragment extends BaseFragment implements SwipeRefreshLayout.On List list = adapter.getPluginList(); for (int i = 0, size = list.size(); i < size; i++) { if (list.get(i).getApk().get(0).getPackageName().equals(busFour.getPackageName())) { - list.remove(i); - if (list.isEmpty()) { - adapter.initItemCount(); - adapter.notifyItemRangeRemoved(1, 2); + if ("卸载".equals(busFour.getType()) + && DownloadManager.getInstance(getActivity()).get( + list.get(i).getApk().get(0).getUrl()) != null) { + adapter.notifyItemChanged(2 + i); } else { - adapter.initItemCount(); - adapter.notifyItemRemoved(location); + list.remove(i); + if (list.isEmpty()) { + adapter.initItemCount(); + adapter.notifyItemRangeRemoved(1, 2); + } else { + adapter.initItemCount(); + adapter.notifyItemRemoved(location); + adapter.notifyItemChanged(1); + } } - adapter.initLocationMap(); break; } } @@ -181,7 +184,9 @@ public class Game1Fragment extends BaseFragment implements SwipeRefreshLayout.On if ("安装".equals(busFour.getType())) { for (ApkEntity apkEntity : gameEntity.getApk()) { if (apkEntity.getPackageName().equals(busFour.getPackageName())) { - gameEntity.getEntryMap().remove(apkEntity.getPlatform()); + if (gameEntity.getEntryMap() != null) { + gameEntity.getEntryMap().remove(apkEntity.getPlatform()); + } adapter.notifyItemChanged(location); break; } @@ -192,6 +197,7 @@ public class Game1Fragment extends BaseFragment implements SwipeRefreshLayout.On } } } + adapter.initLocationMap(); } } 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 dd0110137c..61810dbf69 100644 --- a/app/src/main/java/com/gh/gamecenter/game/Game1FragmentAdapter.java +++ b/app/src/main/java/com/gh/gamecenter/game/Game1FragmentAdapter.java @@ -264,15 +264,18 @@ public class Game1FragmentAdapter extends RecyclerView.Adapter updateList = PackageManager.getUpdateList(); if (updateList.isEmpty()) { - if (!isInitPlugin) { - isInitPlugin = true; - } + isInitPlugin = false; return; } List list = new ArrayList<>(); GameUpdateEntity gameUpdateEntity; + pluginSize = 0; for (int i = 0, size= updateList.size(); i < size; i++) { gameUpdateEntity = updateList.get(i); if (gameUpdateEntity.isPluggable()) { @@ -308,17 +311,20 @@ public class Game1FragmentAdapter extends RecyclerView.Adapter pluginList.size() + 2) { - notifyItemChanged(pluginList.size() + 2); + if (pluginList.isEmpty()) { + pluginList = list; + initItemCount(); + notifyItemRangeInserted(1, pluginList.size() + 1); + if (getItemCount() > pluginList.size() + 2) { + notifyItemChanged(pluginList.size() + 2); + } + } else { + pluginList = list; + notifyDataSetChanged(); } initLocationMap(); } - if (!isInitPlugin) { - isInitPlugin = true; - } + isInitPlugin = false; } private void showView() { diff --git a/app/src/main/java/com/gh/gamecenter/game/Game2Fragment.java b/app/src/main/java/com/gh/gamecenter/game/Game2Fragment.java index 45d96c00d1..f44bbf8208 100644 --- a/app/src/main/java/com/gh/gamecenter/game/Game2Fragment.java +++ b/app/src/main/java/com/gh/gamecenter/game/Game2Fragment.java @@ -153,7 +153,9 @@ public class Game2Fragment extends BaseFragment implements SwipeRefreshLayout.On if ("安装".equals(busFour.getType())) { for (ApkEntity apkEntity : gameEntity.getApk()) { if (apkEntity.getPackageName().equals(busFour.getPackageName())) { - gameEntity.getEntryMap().remove(apkEntity.getPlatform()); + if (gameEntity.getEntryMap() != null) { + gameEntity.getEntryMap().remove(apkEntity.getPlatform()); + } adapter.notifyItemChanged(location); break; } 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 a17f32f4e0..6803b7db09 100644 --- a/app/src/main/java/com/gh/gamecenter/game/Game3Fragment.java +++ b/app/src/main/java/com/gh/gamecenter/game/Game3Fragment.java @@ -174,7 +174,9 @@ public class Game3Fragment extends BaseFragment implements OnRefreshListener { if ("安装".equals(busFour.getType())) { for (ApkEntity apkEntity : gameEntity.getApk()) { if (apkEntity.getPackageName().equals(busFour.getPackageName())) { - gameEntity.getEntryMap().remove(apkEntity.getPlatform()); + if (gameEntity.getEntryMap() != null) { + gameEntity.getEntryMap().remove(apkEntity.getPlatform()); + } adapter.notifyItemChanged(location); break; } diff --git a/app/src/main/java/com/gh/gamecenter/manager/PackageManager.java b/app/src/main/java/com/gh/gamecenter/manager/PackageManager.java index a8b456c73e..cffba058f6 100644 --- a/app/src/main/java/com/gh/gamecenter/manager/PackageManager.java +++ b/app/src/main/java/com/gh/gamecenter/manager/PackageManager.java @@ -183,9 +183,10 @@ public class PackageManager { * @param packageName 包名 */ public static void removeUpdate(String packageName) { - for (int i = 0, size = getUpdateList().size(); i < size; i++) { + for (int i = 0; i < getUpdateList().size(); i++) { if (packageName.equals(getUpdateList().get(i).getPackageName())) { getUpdateList().remove(i); + i--; } } } diff --git a/app/src/main/java/com/gh/gamecenter/manager/SuspectedGameManager.java b/app/src/main/java/com/gh/gamecenter/manager/SuspectedGameManager.java deleted file mode 100644 index a3c0ca48e1..0000000000 --- a/app/src/main/java/com/gh/gamecenter/manager/SuspectedGameManager.java +++ /dev/null @@ -1,42 +0,0 @@ -package com.gh.gamecenter.manager; - -import android.content.Context; - -import com.gh.gamecenter.db.SuspectedGameDao; -import com.gh.gamecenter.db.info.SuspectedGameInfo; - -import java.util.List; - -public class SuspectedGameManager { - - private SuspectedGameDao dao; - - public SuspectedGameManager(Context context) { - dao = new SuspectedGameDao(context); - } - - public void addGame(SuspectedGameInfo entity) { - dao.add(entity); - } - - public SuspectedGameInfo findSuspectedGame(String packageName) { - return dao.find(packageName); - } - - public void deleteSuspectedGame(String packageName) { - dao.delete(packageName); - } - - public List getAllGame() { - return dao.getAll(); - } - - public void updateGame(SuspectedGameInfo entity) { - dao.update(entity); - } - - public void deleteAll() { - dao.deleteAll(); - } - -} 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 dddc9cad8d..76df924683 100644 --- a/app/src/main/java/com/gh/gamecenter/personal/ConcernFragment.java +++ b/app/src/main/java/com/gh/gamecenter/personal/ConcernFragment.java @@ -125,7 +125,9 @@ public class ConcernFragment extends BaseFragment { if ("安装".equals(busFour.getType())) { for (ApkEntity apkEntity : gameEntity.getApk()) { if (apkEntity.getPackageName().equals(busFour.getPackageName())) { - gameEntity.getEntryMap().remove(apkEntity.getPlatform()); + if (gameEntity.getEntryMap() != null) { + gameEntity.getEntryMap().remove(apkEntity.getPlatform()); + } adapter.notifyItemChanged(location); break; }