diff --git a/app/src/main/java/com/gh/base/BaseDetailActivity.java b/app/src/main/java/com/gh/base/BaseDetailActivity.java index 4da46e3dae..0414128eda 100644 --- a/app/src/main/java/com/gh/base/BaseDetailActivity.java +++ b/app/src/main/java/com/gh/base/BaseDetailActivity.java @@ -299,10 +299,13 @@ public abstract class BaseDetailActivity extends BaseActivity implements View.On public void onEventMainThread(EBPackage busFour) { if (gameEntity != null && gameEntity.getApk() != null - && gameEntity.getApk().size() == 1) { - String packageName = gameEntity.getApk().get(0).getPackageName(); - if (packageName.equals(busFour.getPackageName())) { - initDownload(false); + && gameEntity.getApk().size() > 0) { + for (ApkEntity apkEntity : gameEntity.getApk()) { + String packageName = apkEntity.getPackageName(); + if (packageName.equals(busFour.getPackageName())) { + ApkActiveUtils.filterHideApk(gameEntity); + initDownload(false); + } } } } diff --git a/app/src/main/java/com/gh/common/util/ApkActiveUtils.java b/app/src/main/java/com/gh/common/util/ApkActiveUtils.java new file mode 100644 index 0000000000..693ce5d344 --- /dev/null +++ b/app/src/main/java/com/gh/common/util/ApkActiveUtils.java @@ -0,0 +1,33 @@ +package com.gh.common.util; + +import android.content.Context; + +import com.gh.gamecenter.entity.ApkEntity; +import com.gh.gamecenter.entity.GameEntity; +import com.gh.gamecenter.manager.PackageManager; + +import java.util.List; + +/** + * Created by khy on 10/05/17. + */ + +public class ApkActiveUtils { + + // 过滤隐藏apk包 + public static void filterHideApk(GameEntity gameEntity) { + if (gameEntity == null || gameEntity.getApk() == null + || gameEntity.getApk().size() == 0) return; + + List apkList = gameEntity.getApk(); + for (int i = 0; i < apkList.size(); i++) { + ApkEntity apkEntity = apkList.get(i); + String packageName = apkEntity.getPackageName(); + String id = gameEntity.getId(); + if (!apkEntity.isActive() && !PackageManager.isCanPluggable(id, packageName)) { + apkList.remove(i); + i--; + } + } + } +} diff --git a/app/src/main/java/com/gh/gamecenter/GameDetailActivity.java b/app/src/main/java/com/gh/gamecenter/GameDetailActivity.java index 272fc48405..7673ab85a4 100644 --- a/app/src/main/java/com/gh/gamecenter/GameDetailActivity.java +++ b/app/src/main/java/com/gh/gamecenter/GameDetailActivity.java @@ -259,6 +259,7 @@ public class GameDetailActivity extends BaseActivity { .subscribe(new Response() { @Override public void onResponse(GameEntity response) { + ApkActiveUtils.filterHideApk(response); mGameEntity = response; AppController.put("GameEntity", response); @@ -373,10 +374,13 @@ public class GameDetailActivity extends BaseActivity { public void onEventMainThread(EBPackage busFour) { if (mGameEntity != null && mGameEntity.getApk() != null - && mGameEntity.getApk().size() == 1) { - String packageName = mGameEntity.getApk().get(0).getPackageName(); - if (packageName.equals(busFour.getPackageName())) { - initDownload(false); + && mGameEntity.getApk().size() > 0) { + for (ApkEntity apkEntity : mGameEntity.getApk()) { + String packageName = apkEntity.getPackageName(); + if (packageName.equals(busFour.getPackageName())) { + ApkActiveUtils.filterHideApk(mGameEntity); + initDownload(false); + } } } } @@ -584,6 +588,9 @@ public class GameDetailActivity extends BaseActivity { mGameEntity.getName(), downloadAddWord)); } } else { + Utils.log((mGameEntity.getTag() != null) + "==" +(mGameEntity.getTag().size() != 0) + + "==" + (!TextUtils.isEmpty(mGameEntity.getApk().get(0).getGhVersion())) + + "==" + (!PackageUtils.isSignature(this, mGameEntity.getApk().get(0).getPackageName()))); if (mGameEntity.getTag() != null && mGameEntity.getTag().size() != 0 && !TextUtils.isEmpty(mGameEntity.getApk().get(0).getGhVersion()) && !PackageUtils.isSignature(this, mGameEntity.getApk().get(0).getPackageName())) { diff --git a/app/src/main/java/com/gh/gamecenter/LibaoDetailActivity.java b/app/src/main/java/com/gh/gamecenter/LibaoDetailActivity.java index 57f4bd9bb6..0e1f2f5424 100644 --- a/app/src/main/java/com/gh/gamecenter/LibaoDetailActivity.java +++ b/app/src/main/java/com/gh/gamecenter/LibaoDetailActivity.java @@ -121,7 +121,10 @@ public class LibaoDetailActivity extends BaseDetailActivity implements LibaoDeta title = mLibaoEntity.getName(); getGameDigest(); String status = mLibaoEntity.getStatus(); - if (mLibaoEntity.getRepeat() > 0 && (status.equals("linged") || status.equals("taoed"))) { + String beforeStatus = mLibaoEntity.getBeforeStatus(); + if (mLibaoEntity.getRepeat() > 0 && + (("linged").equals(status) || ("taoed").equals(status)) && + ("ling".equals(beforeStatus) || "tao".equals(beforeStatus))) { LibaoDao libaoDao = new LibaoDao(this); if (libaoDao.isCanLing(mLibaoEntity.getLibaoId(), this)) { // 再次检查重复重复领取条件,防止再礼包列表逗留时间过长,导致到了可领取时间 handler.sendEmptyMessage(1); @@ -156,6 +159,7 @@ public class LibaoDetailActivity extends BaseDetailActivity implements LibaoDeta .subscribe(new Response() { @Override public void onResponse(GameEntity response) { + ApkActiveUtils.filterHideApk(response); gameEntity = response; downloadAddWord = gameEntity.getDownloadAddWord(); diff --git a/app/src/main/java/com/gh/gamecenter/NewGameDetailActivity.java b/app/src/main/java/com/gh/gamecenter/NewGameDetailActivity.java deleted file mode 100644 index 258d6eb3a2..0000000000 --- a/app/src/main/java/com/gh/gamecenter/NewGameDetailActivity.java +++ /dev/null @@ -1,645 +0,0 @@ -package com.gh.gamecenter; - -import android.content.Intent; -import android.graphics.Color; -import android.graphics.drawable.ColorDrawable; -import android.os.Bundle; -import android.support.v4.app.Fragment; -import android.text.TextUtils; -import android.view.View; -import android.widget.*; -import butterknife.BindView; -import butterknife.OnClick; -import com.facebook.drawee.view.SimpleDraweeView; -import com.gh.base.AppController; -import com.gh.base.BaseActivity; -import com.gh.common.constant.Config; -import com.gh.common.util.*; -import com.gh.common.view.DownloadDialog; -import com.gh.common.view.NoScrollableViewPager; -import com.gh.download.*; -import com.gh.gamecenter.adapter.FragmentAdapter; -import com.gh.gamecenter.entity.*; -import com.gh.gamecenter.eventbus.*; -import com.gh.gamecenter.gamedetail.FuliFragment; -import com.gh.gamecenter.gamedetail.XinXiFragment; -import com.gh.gamecenter.manager.ConcernManager; -import com.gh.gamecenter.manager.PackageManager; -import com.gh.gamecenter.retrofit.Response; -import com.gh.gamecenter.retrofit.RetrofitManager; -import com.jakewharton.rxbinding.view.RxView; -import com.tencent.tauth.Tencent; -import retrofit2.HttpException; -import rx.android.schedulers.AndroidSchedulers; -import rx.functions.Action1; -import rx.schedulers.Schedulers; - -import java.util.*; -import java.util.concurrent.TimeUnit; - -/** - * Created by khy on 2017/3/24. - * 游戏详情适配器 - */ -public class NewGameDetailActivity extends BaseActivity { - - @BindView(R.id.gamedetail_vp) - NoScrollableViewPager mViewPager; - @BindView(R.id.gamedetail_top) - RelativeLayout mTopLl; - @BindView(R.id.gamedetail_tabbar_rl) - RelativeLayout mTabBarRl; - @BindView(R.id.reuse_ll_loading) - LinearLayout mLoading; - @BindView(R.id.reuse_no_connection) - LinearLayout mNoConnection; - @BindView(R.id.actionbar_tv_title) - TextView mTitle; - @BindView(R.id.gamedetail_iv_thumb) - SimpleDraweeView mGameIcon; - @BindView(R.id.gamedetail_tv_name) - TextView mGameName; - @BindView(R.id.gamedetail_tv_info) - TextView mGameInfo; - @BindView(R.id.gamedetail_tv_concern) - TextView mGameConcern; - @BindView(R.id.gamedetail_tabbar) - LinearLayout mTabBar; - @BindView(R.id.gamedetail_tabbar_fuli) - TextView mTanBarFuLi; - @BindView(R.id.gamedetail_tabbar_xinxi) - TextView mTanBarXinXi; - @BindView(R.id.gamedetail_tabbar_fuli_tv) - TextView mTanBarFuLiTv; - @BindView(R.id.gamedetail_tabbar_xinxi_tv) - TextView mTanBarXinXiTv; - @BindView(R.id.gamedetail_share) - ImageView mShareIv; - - @BindView(R.id.detail_ll_bottom) - LinearLayout mDownloadBottom; - @BindView(R.id.detail_tv_download) - TextView mDownloadTv; - @BindView(R.id.detail_tv_per) - TextView mDownloadPer; - @BindView(R.id.detail_pb_progressbar) - ProgressBar mDownloadPb; - - private RelativeLayout.LayoutParams top_rparams; - - private ConcernManager mConcernManager; - - private String mGameId; - - private GameEntity mGameEntity; - private DownloadEntity mDownloadEntity; - - private String downloadAddWord; - private String downloadOffText; - - private String name; - private String title; - private String shareCode; - - private DataWatcher dataWatcher = new DataWatcher() { - @Override - public void onDataChanged(DownloadEntity downloadEntity) { - if (mGameEntity != null && mGameEntity.getApk().size() == 1) { - String url = mGameEntity.getApk().get(0).getUrl(); - if (url.equals(downloadEntity.getUrl())) { - if (!"pause".equals(DownloadManager.getInstance(NewGameDetailActivity.this). - getStatus(downloadEntity.getUrl()))) { - mDownloadEntity = downloadEntity; - invalidate(); - } - } - } - } - }; - - //接收QQ或者QQ空间分享回调 - @Override - protected void onActivityResult(int requestCode, int resultCode, Intent data) { - super.onActivityResult(requestCode, resultCode, data); - - if (requestCode == com.tencent.connect.common.Constants.REQUEST_QQ_SHARE - || requestCode == com.tencent.connect.common.Constants.REQUEST_QZONE_SHARE) { - Tencent.onActivityResultData(requestCode, resultCode, data, ShareUtils.getInstance(this).QqShareListener); - } - - } - - @Override - protected int getLayoutId() { - return R.layout.activity_game_detail; - } - - @Override - protected void onCreate(Bundle savedInstanceState) { - super.onCreate(savedInstanceState); - init(""); - - mViewPager.setScrollable(false); - - mConcernManager = new ConcernManager(NewGameDetailActivity.this); - - name = "游戏详情"; - - mGameId = getIntent().getStringExtra("gameId"); - if (getIntent().getBundleExtra("data") != null) { - mGameId = getIntent().getBundleExtra("data").getString("gameId"); - } - - if (mGameId == null) { - mGameEntity = (GameEntity) AppController.get("GameEntity", false); - if (mGameEntity != null) { - mGameId = mGameEntity.getId(); - mTitle.setText(mGameEntity.getName()); - name = mGameEntity.getName(); - } - } - if (mGameEntity != null) { - getGameDetail(); - } else if (mGameId != null) { - getGameDigest(); - } else { - mLoading.setVisibility(View.GONE); - mNoConnection.setVisibility(View.VISIBLE); - } - - } - - private void initGameDetailTop() { - - mLoading.setVisibility(View.GONE); - mTopLl.setVisibility(View.VISIBLE); - - top_rparams = (RelativeLayout.LayoutParams) mTopLl.getLayoutParams(); - - if (mConcernManager.isConcern(mGameEntity.getId())) { - mGameConcern.setText("取消关注"); - mGameConcern.setBackgroundResource(R.drawable.border_red_bg); - mGameConcern.setTextColor(Color.parseColor("#ff4147")); - } else { - mGameConcern.setText("关注"); - mGameConcern.setBackgroundResource(R.drawable.textview_concern_red_style); - mGameConcern.setTextColor(0xffffffff); - } - - mGameName.setText(mGameEntity.getName()); - ImageUtils.display(mGameIcon, mGameEntity.getIcon()); - if (mGameEntity.getApk() == null || mGameEntity.getApk().isEmpty()) { - mGameInfo.setText(""); - } else { - ApkEntity apkEntity = mGameEntity.getApk().get(0); - mGameInfo.setText(String.format("V%s | %s", apkEntity.getVersion(), apkEntity.getSize())); - } - mGameConcern.setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View v) { - final TextView concern = (TextView) v; - if ("关注".equals(concern.getText().toString())) { - - Map kv = new HashMap<>(); - kv.put("状态", "关注"); - DataUtils.onEvent(NewGameDetailActivity.this, "游戏关注", mGameEntity.getName(), kv); - - Map kv2 = new HashMap<>(); - kv2.put("点击", "关注"); - DataUtils.onEvent(NewGameDetailActivity.this, "插件数据", mGameEntity.getName(), kv2); - - DataCollectionUtils.uploadConcern(NewGameDetailActivity.this, mGameEntity.getName(), mGameEntity.getId(), "关注"); - - mConcernManager.addByEntity(mGameEntity); - concern.setText("取消关注"); - concern.setBackgroundResource(R.drawable.border_red_bg); - concern.setTextColor(Color.parseColor("#ff4147")); - - Toast.makeText(NewGameDetailActivity.this, "关注成功", Toast.LENGTH_SHORT).show(); - - // 添加关注 - ConcernUtils.postConcernGameId(NewGameDetailActivity.this, mGameEntity.getId()); - } else { - Map kv2 = new HashMap<>(); - kv2.put("点击", "取消关注"); - DataUtils.onEvent(NewGameDetailActivity.this, "插件数据", mGameEntity.getName(), kv2); - - DialogUtils.showCancelDialog(NewGameDetailActivity.this, new DialogUtils.ConfirmListener() { - @Override - public void onConfirm() { - Map kv = new HashMap<>(); - kv.put("状态", "取消关注"); - DataUtils.onEvent(NewGameDetailActivity.this, "游戏关注", mGameEntity.getName(), kv); - - DataCollectionUtils.uploadConcern(NewGameDetailActivity.this, - mGameEntity.getName(), mGameEntity.getId(), "取消关注"); - - mConcernManager.deleteConcern(mGameEntity.getId()); - concern.setText("关注"); - concern.setBackgroundResource(R.drawable.textview_concern_red_style); - concern.setTextColor(0xffffffff); - - // 取消关注 - ConcernUtils.deleteConcernData(NewGameDetailActivity.this, mGameEntity.getId()); - } - }); - } - } - }); - - } - - // 获取游戏摘要 - private void getGameDigest() { - RetrofitManager.getApi().getGameDigest(mGameId) - .subscribeOn(Schedulers.io()) - .observeOn(AndroidSchedulers.mainThread()) - .subscribe(new Response() { - @Override - public void onResponse(GameEntity response) { - mGameEntity = response; - AppController.put("GameEntity", response); - - mTitle.setText(mGameEntity.getName()); - mGameId = response.getId(); - name = mGameEntity.getName(); - getGameDetail(); - } - - @Override - public void onFailure(HttpException e) { - mLoading.setVisibility(View.GONE); - mNoConnection.setVisibility(View.VISIBLE); - } - }); - } - - // 获取游戏详情 - public void getGameDetail() { - RetrofitManager.getApi().getGameDetail(mGameId) - .subscribeOn(Schedulers.io()) - .observeOn(AndroidSchedulers.mainThread()) - .subscribe(new Response() { - @Override - public void onResponse(GameDetailEntity response) { - // 过滤过期公告 - if (response.getNotice() != null && response.getNotice().size() > 0) { - long l = System.currentTimeMillis(); - for (int i = 0; i < response.getNotice().size(); i++) { - if (l > (response.getNotice().get(i).getOvertime() * 1000)) { - response.getNotice().remove(i); - i--; - } - } - } - - AppController.put("GameDetailEntity", response); - - downloadAddWord = response.getDownloadAddWord(); - downloadOffText = response.getDownloadOffText(); - shareCode = response.getShareCode(); - - List list = new ArrayList<>(); - if (mGameEntity != null && !mGameEntity.isLibaoExists() - && TextUtils.isEmpty(response.getFulishuoming()) - && (response.getKaiFuServer() == null - || (response.getKaiFuServer() != null - && response.getKaiFuServer().size() == 0))) { - XinXiFragment xinXiFragment = new XinXiFragment(); - xinXiFragment.setIsTabBar(true); - list.add(xinXiFragment); - mTabBar.setVisibility(View.GONE); - } else { - list.add(new FuliFragment()); - list.add(new XinXiFragment()); - } - - mViewPager.setAdapter(new FragmentAdapter(getSupportFragmentManager(), list)); - initGameDetailTop(); - - initDownload(true); - } - - @Override - public void onError(Throwable e) { - super.onError(e); - } - - @Override - public void onFailure(HttpException e) { - - } - }); - } - - public void onEventMainThread(EBMoveTop moveTop) { - if (moveTop.getType().equals("top")) { - if (moveTop.getVisibility() == View.VISIBLE && mTabBar.getVisibility() == View.VISIBLE) { - mTabBarRl.setVisibility(View.VISIBLE); - } else { - mTabBarRl.setVisibility(View.GONE); - } - int topMargin = moveTop.getTopMargin(); - if (top_rparams != null && top_rparams.topMargin != topMargin) { - if (topMargin > -120) { - mTitle.setVisibility(View.GONE); - } else { - mTitle.setVisibility(View.VISIBLE); - } - top_rparams.topMargin = moveTop.getTopMargin(); - mTopLl.setLayoutParams(top_rparams); - } - } - } - - // 接收下载被删除消息 - public void onEvent(EBDownloadStatus status) { - if ("delete".equals(status.getStatus()) - && mGameEntity != null - && mGameEntity.getApk() != null - && mGameEntity.getApk().size() == 1) { - String url = mGameEntity.getApk().get(0).getUrl(); - if (url.equals(status.getUrl())) { - initDownload(false); - } - } - } - - // 接受安装、卸载消息 - public void onEventMainThread(EBPackage busFour) { - if (mGameEntity != null - && mGameEntity.getApk() != null - && mGameEntity.getApk().size() == 1) { - String packageName = mGameEntity.getApk().get(0).getPackageName(); - if (packageName.equals(busFour.getPackageName())) { - initDownload(false); - } - } - } - - - @Override - protected void onResume() { - super.onResume(); - if (mGameEntity != null - && mGameEntity.getApk() != null - && mGameEntity.getApk().size() == 1) { - initDownload(true); - } - DownloadManager.getInstance(this).addObserver(dataWatcher); - } - - @Override - protected void onPause() { - super.onPause(); - DownloadManager.getInstance(this).removeObserver(dataWatcher); - } - - - @OnClick({R.id.detail_tv_download, R.id.detail_pb_progressbar - , R.id.detail_tv_per, R.id.gamedetail_tabbar_xinxi, R.id.gamedetail_tabbar_xinxi_tv - , R.id.gamedetail_tabbar_fuli, R.id.gamedetail_tabbar_fuli_tv, R.id.gamedetail_share}) - public void onClick(View v) { - if (v == mDownloadTv) { - if (mGameEntity != null && !mGameEntity.getApk().isEmpty()) { - if (mGameEntity.getApk().size() == 1) { - if (NetworkUtils.isWifiConnected(this)) { - download(); - } else { - DialogUtils.showDownloadDialog(this, new DialogUtils.ConfirmListener() { - @Override - public void onConfirm() { - download(); - } - }); - } - } else { - DownloadDialog.getInstance(this).showPopupWindow(v, mGameEntity, entrance, name + ":" + title); - } - } else { - toast("稍等片刻~!游戏正在上传中..."); - } - } else if (v == mDownloadPb || v == mDownloadPer) { - String str = mDownloadPer.getText().toString(); - if ("下载中".equals(str)) { - Intent intent = new Intent(this, DownloadManagerActivity.class); - intent.putExtra("currentItem", 1); - intent.putExtra("url", mGameEntity.getApk().get(0).getUrl()); - intent.putExtra("entrance", entrance + "+(" + name + "[" + title + "])"); - startActivity(intent); - } else if ("安装".equals(str)) { - PackageUtils.launchSetup(this, mDownloadEntity.getPath()); - } - } else if (v == mTanBarFuLi || v == mTanBarFuLiTv) { - mTanBarFuLi.setTextColor(Color.WHITE); - mTanBarFuLiTv.setTextColor(Color.WHITE); - mTanBarFuLi.setBackgroundResource(R.drawable.gamedetail_tag_select_bg); - mTanBarFuLiTv.setBackgroundResource(R.drawable.gamedetail_tag_select_bg); - mTanBarXinXi.setTextColor(Color.BLACK); - mTanBarXinXiTv.setTextColor(Color.BLACK); - mTanBarXinXi.setBackgroundDrawable(new ColorDrawable(0)); - mTanBarXinXiTv.setBackgroundDrawable(new ColorDrawable(0)); - mViewPager.setCurrentItem(0); - - } else if (v == mTanBarXinXi || v == mTanBarXinXiTv) { - mTanBarXinXiTv.setTextColor(Color.WHITE); - mTanBarXinXi.setTextColor(Color.WHITE); - mTanBarXinXiTv.setBackgroundResource(R.drawable.gamedetail_tag_unselect_bg); - mTanBarXinXi.setBackgroundResource(R.drawable.gamedetail_tag_unselect_bg); - mTanBarFuLi.setTextColor(Color.BLACK); - mTanBarFuLiTv.setTextColor(Color.BLACK); - mTanBarFuLi.setBackgroundDrawable(new ColorDrawable(0)); - mTanBarFuLiTv.setBackgroundDrawable(new ColorDrawable(0)); - mViewPager.setCurrentItem(1); - } else if (v == mShareIv) { - if (TextUtils.isEmpty(shareCode)) return; - // 防抖处理 - RxView.clicks(mShareIv) - .throttleFirst(1, TimeUnit.SECONDS) - .subscribe(new Action1() { - @Override - public void call(Void aVoid) { - Map kv = new HashMap<>(); - kv.put("点击", "分享"); - DataUtils.onEvent(NewGameDetailActivity.this, "插件数据", mGameEntity.getName(), kv); - - DataCollectionUtils.uploadClick(NewGameDetailActivity.this, "分享", "游戏详情", mGameEntity.getName()); - - String url = "http://www.ghzhushou.com/game/" + shareCode; - showShare(url, mGameEntity.getName(), mGameEntity.getIcon(), null, mGameEntity.getTag()); - } - }); - } - } - - private void download() { - String str = mDownloadTv.getText().toString(); - if (str.contains("启动")) { - DataUtils.onGameLaunchEvent(this, mGameEntity.getName(), mGameEntity.getApk().get(0).getPlatform(), name); - - PackageUtils.launchApplicationByPackageName(this, mGameEntity.getApk().get(0).getPackageName()); - } else { - String method; - if (str.contains("更新")) { - method = "更新"; - } else if (str.contains("插件化")) { - method = "插件化"; - } else { - method = "下载"; - } - ApkEntity apkEntity = mGameEntity.getApk().get(0); - String msg = FileUtils.isCanDownload(this, apkEntity.getSize()); - if (TextUtils.isEmpty(msg)) { - DataUtils.onGameDownloadEvent(this, mGameEntity.getName(), apkEntity.getPlatform(), entrance, "下载开始"); - - DownloadManager.createDownload(this, apkEntity, mGameEntity, method, entrance, name + ":" + title); - - mDownloadTv.setVisibility(View.GONE); - mDownloadPb.setVisibility(View.VISIBLE); - mDownloadPer.setVisibility(View.VISIBLE); - mDownloadPb.setProgress(0); - mDownloadPer.setText("0.0%"); - - DownloadManager.getInstance(NewGameDetailActivity.this).putStatus(apkEntity.getUrl(), "downloading"); - } else { - toast(msg); - } - } - } - - private void invalidate() { - mDownloadPb.setProgress((int) (mDownloadEntity.getPercent() * 10)); - mDownloadPer.setTextColor(0xFFFFFFFF); - switch (mDownloadEntity.getStatus()) { - case downloading: - case pause: - case timeout: - case neterror: - case waiting: - mDownloadPer.setText("下载中"); - break; - case done: - mDownloadPer.setText("安装"); - if (mDownloadEntity.isPluggable() - && PackageManager.isInstalled(mDownloadEntity.getPackageName())) { - mDownloadPb.setProgressDrawable(getResources().getDrawable(R.drawable.progressbar_plugin_radius_style)); - } else { - mDownloadPb.setProgressDrawable(getResources().getDrawable(R.drawable.progressbar_normal_radius_style)); - } - break; - case cancel: - case hijack: - case notfound: - initDownload(false); - break; - default: - break; - } - } - - protected void initDownload(boolean isCheck) { - if (Config.isShow(this)) { - mDownloadBottom.setVisibility(View.VISIBLE); - } else { - mDownloadBottom.setVisibility(View.GONE); - } - if (mGameEntity != null && "光环助手".equals(mGameEntity.getName())) { - mDownloadBottom.setVisibility(View.GONE); - } else if (mGameEntity == null || mGameEntity.getApk().isEmpty()) { - mDownloadTv.setVisibility(View.VISIBLE); - mDownloadPb.setVisibility(View.GONE); - mDownloadPer.setVisibility(View.GONE); - if (TextUtils.isEmpty(downloadOffText)) { - mDownloadTv.setText("暂无下载"); - } else { - mDownloadTv.setText(downloadOffText); - } - mDownloadTv.setBackgroundResource(R.drawable.game_item_btn_pause_style); - mDownloadTv.setTextColor(0xFF999999); - mDownloadTv.setClickable(false); - } else { - mDownloadTv.setVisibility(View.VISIBLE); - mDownloadPb.setVisibility(View.GONE); - mDownloadPer.setVisibility(View.GONE); - boolean isInstalled = false; - if (mGameEntity.getApk() != null && mGameEntity.getApk().size() == 1 - && PackageManager.isInstalled(mGameEntity.getApk().get(0).getPackageName())) { - isInstalled = true; - } - if (isInstalled) { - if (PackageManager.isCanUpdate(mGameEntity.getId(), mGameEntity.getApk().get(0).getPackageName())) { - if (TextUtils.isEmpty(downloadAddWord)) { - mDownloadTv.setBackgroundResource( - R.drawable.game_item_btn_download_style); - mDownloadTv.setText(String.format("更新《%s》", - mGameEntity.getName())); - } else { - mDownloadTv.setBackgroundResource( - R.drawable.game_item_btn_download_style); - mDownloadTv.setText(String.format("更新《%s》%s", - mGameEntity.getName(), downloadAddWord)); - } - } else { - if (mGameEntity.getTag() != null && mGameEntity.getTag().size() != 0 - && !TextUtils.isEmpty(mGameEntity.getApk().get(0).getGhVersion()) - && !PackageUtils.isSignature(this, mGameEntity.getApk().get(0).getPackageName())) { - if (TextUtils.isEmpty(downloadAddWord)) { - mDownloadTv.setBackgroundResource( - R.drawable.game_item_btn_plugin_style); - mDownloadTv.setText(String.format("插件化《%s》", - mGameEntity.getName())); - } else { - mDownloadTv.setBackgroundResource( - R.drawable.game_item_btn_plugin_style); - mDownloadTv.setText(String.format("插件化《%s》%s", - mGameEntity.getName(), downloadAddWord)); - } - } else { - if (TextUtils.isEmpty(downloadAddWord)) { - mDownloadTv.setBackgroundResource( - R.drawable.game_item_btn_launch_style); - mDownloadTv.setText(String.format("启动《%s》", - mGameEntity.getName())); - } else { - mDownloadTv.setBackgroundResource( - R.drawable.game_item_btn_launch_style); - mDownloadTv.setText(String.format("启动《%s》%s", - mGameEntity.getName(), downloadAddWord)); - } - } - } - } else { - String status = GameUtils.getDownloadBtnText(this, mGameEntity); - if ("插件化".equals(status)) { - mDownloadTv.setBackgroundResource(R.drawable.game_item_btn_plugin_style); - } else if ("打开".equals(status)) { - mDownloadTv.setBackgroundResource(R.drawable.game_item_btn_launch_style); - } else { - mDownloadTv.setBackgroundResource(R.drawable.game_item_btn_download_style); - } - - if (TextUtils.isEmpty(downloadAddWord)) { - mDownloadTv.setText(String.format(status + "《%s》", - mGameEntity.getName())); - } else { - mDownloadTv.setText(String.format(status + "《%s》%s", - mGameEntity.getName(), downloadAddWord)); - } - } - } - if (isCheck && mGameEntity != null - && mGameEntity.getApk() != null - && mGameEntity.getApk().size() == 1) { - String url = mGameEntity.getApk().get(0).getUrl(); - DownloadEntity downloadEntity = DownloadManager.getInstance(getApplicationContext()).get(url); - if (downloadEntity != null) { - mDownloadEntity = downloadEntity; - mDownloadTv.setVisibility(View.GONE); - mDownloadPb.setVisibility(View.VISIBLE); - mDownloadPer.setVisibility(View.VISIBLE); - invalidate(); - } - } - } - -} diff --git a/app/src/main/java/com/gh/gamecenter/NewsDetailActivity.java b/app/src/main/java/com/gh/gamecenter/NewsDetailActivity.java index 2751f7c5ed..968508e5db 100644 --- a/app/src/main/java/com/gh/gamecenter/NewsDetailActivity.java +++ b/app/src/main/java/com/gh/gamecenter/NewsDetailActivity.java @@ -461,6 +461,7 @@ public class NewsDetailActivity extends BaseActivity implements OnClickListener .subscribe(new Response() { @Override public void onResponse(GameEntity response) { + ApkActiveUtils.filterHideApk(response); gameEntity = response; adapter.setGameEntity(gameEntity); adapter.notifyItemInserted(1); diff --git a/app/src/main/java/com/gh/gamecenter/SubjectActivity.java b/app/src/main/java/com/gh/gamecenter/SubjectActivity.java index 070d30e236..a24ed1c495 100644 --- a/app/src/main/java/com/gh/gamecenter/SubjectActivity.java +++ b/app/src/main/java/com/gh/gamecenter/SubjectActivity.java @@ -33,8 +33,8 @@ public class SubjectActivity extends BaseActivity { ViewPager mViewPager; @BindView(R.id.subject_tab) TabLayout mTabLayout; - @BindView(R.id.reuse_no_connection) - LinearLayout mNoConn; + @BindView(R.id.reuse_ll_loading) + LinearLayout mLoading; private String mId; private String mName; @@ -107,20 +107,27 @@ public class SubjectActivity extends BaseActivity { @Override public void onResponse(List response) { super.onResponse(response); - if (response == null) return; - - GameEntity gameEntity = response.get(0); - ArrayList tag = gameEntity.getTag(); - if (tag == null) { - tag = new ArrayList<>(1); + mLoading.setVisibility(View.GONE); + if (response != null && response.size() > 0){ + GameEntity gameEntity = response.get(0); + ArrayList tag = gameEntity.getTag(); + if (tag == null) { + tag = new ArrayList<>(1); + } + tag.add(0, "全部"); + setupViewPager(tag); + } else { + ArrayList tag = new ArrayList<>(1); + tag.add(0, "全部"); + setupViewPager(tag); } - tag.add(0, "全部"); - setupViewPager(tag); + } @Override public void onFailure(HttpException e) { super.onFailure(e); + mLoading.setVisibility(View.GONE); ArrayList tag = new ArrayList<>(1); tag.add(0, "全部"); setupViewPager(tag); diff --git a/app/src/main/java/com/gh/gamecenter/adapter/ConcernAdapter.java b/app/src/main/java/com/gh/gamecenter/adapter/ConcernAdapter.java index 0ac35d1e14..17fc5e28de 100644 --- a/app/src/main/java/com/gh/gamecenter/adapter/ConcernAdapter.java +++ b/app/src/main/java/com/gh/gamecenter/adapter/ConcernAdapter.java @@ -4,6 +4,7 @@ import android.view.View; import android.view.ViewGroup; import android.widget.Toast; +import com.gh.common.util.ApkActiveUtils; import com.gh.common.util.DataCollectionUtils; import com.gh.common.util.DataUtils; import com.gh.common.util.DialogUtils; @@ -81,6 +82,7 @@ public class ConcernAdapter extends BaseRecyclerAdapter { .subscribe(new Response() { @Override public void onNext(GameEntity response) { + ApkActiveUtils.filterHideApk(response); result.add(response); } diff --git a/app/src/main/java/com/gh/gamecenter/adapter/ConcernRecommendAdapter.java b/app/src/main/java/com/gh/gamecenter/adapter/ConcernRecommendAdapter.java index bd05dca5ad..8c5e53ef7a 100644 --- a/app/src/main/java/com/gh/gamecenter/adapter/ConcernRecommendAdapter.java +++ b/app/src/main/java/com/gh/gamecenter/adapter/ConcernRecommendAdapter.java @@ -5,6 +5,7 @@ import android.view.View; import android.view.ViewGroup; import android.widget.Toast; +import com.gh.common.util.ApkActiveUtils; import com.gh.common.util.DataCollectionUtils; import com.gh.common.util.DataUtils; import com.gh.common.util.GameUtils; @@ -68,6 +69,7 @@ public class ConcernRecommendAdapter extends BaseRecyclerAdapter response) { for (GameEntity gameEntity : response) { + ApkActiveUtils.filterHideApk(gameEntity); for (int i = 0, size = mGameList.size(); i < size; i++) { if (gameEntity.getId().equals(mGameList.get(i).getId())) { break; diff --git a/app/src/main/java/com/gh/gamecenter/adapter/KaiFuAdapter.java b/app/src/main/java/com/gh/gamecenter/adapter/KaiFuAdapter.java index de465d6be8..f8e2a6fe22 100644 --- a/app/src/main/java/com/gh/gamecenter/adapter/KaiFuAdapter.java +++ b/app/src/main/java/com/gh/gamecenter/adapter/KaiFuAdapter.java @@ -134,6 +134,7 @@ public class KaiFuAdapter extends BaseRecyclerAdapter { // 黄壮华 初始化游戏状态 修改2015/8/15 entity.setEntryMap(DownloadManager.getInstance(mContext).getEntryMap(entity.getName())); manager.addOrUpdate(entity.getApk(), entity.getId(), entity.getName()); + ApkActiveUtils.filterHideApk(entity); } mSubjectList.addAll(response); @@ -206,6 +207,8 @@ public class KaiFuAdapter extends BaseRecyclerAdapter { // 黄壮华 初始化游戏状态 修改2015/8/15 entity.setEntryMap(DownloadManager.getInstance(mContext).getEntryMap(entity.getName())); manager.addOrUpdate(entity.getApk(), entity.getId(), entity.getName()); + + ApkActiveUtils.filterHideApk(entity); } mSubjectList.addAll(0, response); diff --git a/app/src/main/java/com/gh/gamecenter/entity/ApkEntity.java b/app/src/main/java/com/gh/gamecenter/entity/ApkEntity.java index dab4fa53a3..6154b23b4e 100644 --- a/app/src/main/java/com/gh/gamecenter/entity/ApkEntity.java +++ b/app/src/main/java/com/gh/gamecenter/entity/ApkEntity.java @@ -25,6 +25,8 @@ public class ApkEntity { private int order; + private boolean active = true; + public int getOrder() { return order; } @@ -100,4 +102,11 @@ public class ApkEntity { this.etag = etag; } + public boolean isActive() { + return active; + } + + public void setActive(boolean active) { + this.active = active; + } } diff --git a/app/src/main/java/com/gh/gamecenter/game/GameFragment.java b/app/src/main/java/com/gh/gamecenter/game/GameFragment.java index cf62eed755..8312eff7a6 100644 --- a/app/src/main/java/com/gh/gamecenter/game/GameFragment.java +++ b/app/src/main/java/com/gh/gamecenter/game/GameFragment.java @@ -9,6 +9,7 @@ import android.widget.LinearLayout; import com.facebook.drawee.backends.pipeline.Fresco; import com.gc.materialdesign.views.ProgressBarCircularIndeterminate; import com.gh.base.HomeFragment; +import com.gh.common.util.ApkActiveUtils; import com.gh.common.util.DownloadItemUtils; import com.gh.download.*; import com.gh.gamecenter.MainActivity; @@ -172,6 +173,7 @@ public class GameFragment extends HomeFragment implements SwipeRefreshLayout.OnR for (int location : locationList) { gameEntity = adapter.getGameEntityByLocation(location); if (gameEntity != null) { + ApkActiveUtils.filterHideApk(gameEntity); if (gameEntity.isPluggable()) { // 插件化列表 if ("安装".equals(busFour.getType()) || "卸载".equals(busFour.getType())) { diff --git a/app/src/main/java/com/gh/gamecenter/game/GameFragmentAdapter.java b/app/src/main/java/com/gh/gamecenter/game/GameFragmentAdapter.java index 57be7c6c9b..d4703c8e04 100644 --- a/app/src/main/java/com/gh/gamecenter/game/GameFragmentAdapter.java +++ b/app/src/main/java/com/gh/gamecenter/game/GameFragmentAdapter.java @@ -203,9 +203,10 @@ public class GameFragmentAdapter extends BaseRecyclerAdapter { } for (int i = 0; i < subjectEntity.getData().size(); i++) { gameEntity = subjectEntity.getData().get(i); - if (gameEntity.getApk() != null && !gameEntity.getApk().isEmpty()) { + ArrayList apkist = gameEntity.getApk(); + if (apkist != null && !apkist.isEmpty()) { gameEntity.setEntryMap(DownloadManager.getInstance(mContext).getEntryMap(gameEntity.getName())); - manager.addOrUpdate(gameEntity.getApk(), gameEntity.getId(), gameEntity.getName()); + manager.addOrUpdate(apkist, gameEntity.getId(), gameEntity.getName()); } else if (TextUtils.isEmpty(gameEntity.getId())) { if (TextUtils.isEmpty(gameEntity.getType()) || TextUtils.isEmpty(gameEntity.getLink()) @@ -215,6 +216,8 @@ public class GameFragmentAdapter extends BaseRecyclerAdapter { i--; } } + + ApkActiveUtils.filterHideApk(gameEntity); } } return list; @@ -769,7 +772,7 @@ public class GameFragmentAdapter extends BaseRecyclerAdapter { holder.gameName.setPadding(0, 0, paddRight, 0); ImageUtils.display(holder.gameThumb, gameEntity.getIcon()); - if (gameEntity.isPluggable()) { + if (gameEntity.isPluggable() && gameEntity.getApk().size() > 0) { holder.gameName.setText(String.format("%s - %s", gameEntity.getName(), PlatformUtils.getInstance(mContext).getPlatformName( gameEntity.getApk().get(0).getPlatform()))); @@ -983,7 +986,9 @@ public class GameFragmentAdapter extends BaseRecyclerAdapter { int[] indexes = RandomUtils.getRandomArray(size, sourceList.size()); for (int index : indexes) { - rawList.add(sourceList.get(index)); + GameEntity gameEntity = sourceList.get(index); + ApkActiveUtils.filterHideApk(gameEntity); + rawList.add(gameEntity); } notifyDataSetChanged(); diff --git a/app/src/main/java/com/gh/gamecenter/gamedetail/GameDetailKaiFuAdapter.java b/app/src/main/java/com/gh/gamecenter/gamedetail/GameDetailKaiFuAdapter.java index a70ec771dc..15ffdd2a6c 100644 --- a/app/src/main/java/com/gh/gamecenter/gamedetail/GameDetailKaiFuAdapter.java +++ b/app/src/main/java/com/gh/gamecenter/gamedetail/GameDetailKaiFuAdapter.java @@ -4,8 +4,6 @@ import android.content.Context; import android.content.Intent; import android.graphics.Color; import android.graphics.drawable.ColorDrawable; -import android.os.Handler; -import android.os.Message; import android.support.v4.content.ContextCompat; import android.support.v7.widget.RecyclerView; import android.support.v7.widget.RecyclerView.ViewHolder; @@ -14,13 +12,21 @@ import android.widget.LinearLayout; import android.widget.TextView; import com.gh.common.util.DisplayUtils; import com.gh.common.util.StringUtils; +import com.gh.common.util.Utils; import com.gh.gamecenter.R; import com.gh.gamecenter.SuggestionActivity; import com.gh.gamecenter.adapter.BaseRecyclerAdapter; import com.gh.gamecenter.entity.CalendarEntity; import com.gh.gamecenter.entity.KaiFuServerEntity; import com.gh.gamecenter.eventbus.EBReuse; +import com.gh.gamecenter.retrofit.Response; + import de.greenrobot.event.EventBus; +import retrofit2.HttpException; +import rx.*; +import rx.Observable; +import rx.android.schedulers.AndroidSchedulers; +import rx.schedulers.Schedulers; import java.text.SimpleDateFormat; import java.util.*; @@ -48,29 +54,7 @@ public class GameDetailKaiFuAdapter extends BaseRecyclerAdapter { private GameDetailKaiFuViewHolder viewHolder; - Handler mHandler = new Handler() { - @Override - public void handleMessage(Message msg) { - super.handleMessage(msg); - switch (msg.what) { - case 0: - try { - notifyDataSetChanged(); - } catch (Exception e) { - e.printStackTrace(); - } - break; - case 1: - ViewGroup.LayoutParams params = viewHolder.kaifuRl.getLayoutParams(); - params.height = ((curDayData.size() / 7) - 1) * DisplayUtils.dip2px(mContext, 46) - + DisplayUtils.dip2px(mContext, 26); - viewHolder.kaifuRl.setLayoutParams(params); - break; - } - } - }; - - public GameDetailKaiFuAdapter(Context context, List serverInfo, + GameDetailKaiFuAdapter(Context context, List serverInfo, GameDetailKaiFuViewHolder viewHolder, String gameName) { super(context); this.mServerList = serverInfo; @@ -85,18 +69,12 @@ public class GameDetailKaiFuAdapter extends BaseRecyclerAdapter { checkExistCurSerer(); initView(viewHolder); - - new Thread(new Runnable() { - @Override - public void run() { - initDate(); - } - }).start(); + initDate(); } private void checkExistCurSerer() { long curDate = System.currentTimeMillis(); - SimpleDateFormat formatMonth = new SimpleDateFormat("MM"); + SimpleDateFormat formatMonth = new SimpleDateFormat("MM", Locale.CHINA); int curMonth = Integer.parseInt(formatMonth.format(curDate)); for (KaiFuServerEntity kaiFuServerEntity : mServerList) { // 判断当月是否有开服 @@ -112,8 +90,8 @@ public class GameDetailKaiFuAdapter extends BaseRecyclerAdapter { private void initView(final GameDetailKaiFuViewHolder viewHolder) { long curDate = System.currentTimeMillis(); - SimpleDateFormat formatMonth = new SimpleDateFormat("MM"); - SimpleDateFormat format = new SimpleDateFormat("yyyy年M月"); + SimpleDateFormat formatMonth = new SimpleDateFormat("MM", Locale.CHINA); + SimpleDateFormat format = new SimpleDateFormat("yyyy年M月", Locale.CHINA); int curMonth = Integer.parseInt(formatMonth.format(curDate)); long lastTime = 0; @@ -202,74 +180,101 @@ public class GameDetailKaiFuAdapter extends BaseRecyclerAdapter { private void initDate() { + Observable + .create(new Observable.OnSubscribe() { - // 获取当前 年-月 - long curDate = System.currentTimeMillis(); - SimpleDateFormat formatYear = new SimpleDateFormat("yyyy"); - SimpleDateFormat formatMonth = new SimpleDateFormat("MM"); - SimpleDateFormat formatDay = new SimpleDateFormat("dd"); + @Override + public void call(Subscriber subscriber) { + // 获取当前 年-月 + long curDate = System.currentTimeMillis(); + SimpleDateFormat formatYear = new SimpleDateFormat("yyyy", Locale.CHINA); + SimpleDateFormat formatMonth = new SimpleDateFormat("MM", Locale.CHINA); + SimpleDateFormat formatDay = new SimpleDateFormat("dd", Locale.CHINA); - int curYear = Integer.parseInt(formatYear.format(curDate)); - int curMonth = Integer.parseInt(formatMonth.format(curDate)); + int curYear = Integer.parseInt(formatYear.format(curDate)); + int curMonth = Integer.parseInt(formatMonth.format(curDate)); - if (isNextMonth || !isExistCurServer) { - isNextMonth = true; - if (curMonth == 12) { - curMonth = 1; - } else { - curMonth = curMonth + 1; - } - } + if (isNextMonth || !isExistCurServer) { + isNextMonth = true; + if (curMonth == 12) { + curMonth = 1; + } else { + curMonth = curMonth + 1; + } + } - curDay = Integer.parseInt(formatDay.format(curDate)); + curDay = Integer.parseInt(formatDay.format(curDate)); - monthCount = getDaysByYearMonth(curYear, curMonth); // 获取当月天数 - curWeek = getWeekByDay(curYear, curMonth); + monthCount = getDaysByYearMonth(curYear, curMonth); // 获取当月天数 + curWeek = getWeekByDay(curYear, curMonth); - curDayData.clear(); - int day = 0; - for (int i = 1; i <= 49; i++) { - CalendarEntity entity = new CalendarEntity(); - if (i >= curWeek && monthCount > day) { - day++; - entity.setDay(day); - curDayData.add(entity); - } else { - entity.setDay(-1); - curDayData.add(entity); - } - } + curDayData.clear(); + int day = 0; + for (int i = 1; i <= 49; i++) { + CalendarEntity entity = new CalendarEntity(); + if (i >= curWeek && monthCount > day) { + day++; + entity.setDay(day); + curDayData.add(entity); + } else { + entity.setDay(-1); + curDayData.add(entity); + } + } - if (curDayData.get(36).getDay() == -1) { - for (int i = 1; i <= 7; i++) { - curDayData.remove(49 - i); - } - } else { - mHandler.sendEmptyMessage(1); - } + if (curDayData.get(36).getDay() == -1) { + for (int i = 1; i <= 7; i++) { + curDayData.remove(49 - i); + } + } else { + subscriber.onNext(1); + } + for (KaiFuServerEntity serverEntity : mServerList) { + long time = serverEntity.getTime(); + int serverMonth = Integer.parseInt(formatMonth.format(time * 1000)); + if (serverMonth == curMonth) { + int i = Integer.parseInt(formatDay.format(time * 1000)); + for (CalendarEntity entity : curDayData) { - for (KaiFuServerEntity serverEntity : mServerList) { - long time = serverEntity.getTime(); - int serverMonth = Integer.parseInt(formatMonth.format(time * 1000)); - if (serverMonth == curMonth) { - int i = Integer.parseInt(formatDay.format(time * 1000)); - for (CalendarEntity entity : curDayData) { + if (entity.getDay() == i) { + List server = entity.getServer(); + if (server == null) server = new ArrayList<>(); - if (entity.getDay() == i) { - List server = entity.getServer(); - if (server == null) server = new ArrayList<>(); + server.add(serverEntity); + entity.setServer(server); + } + } + } + } - server.add(serverEntity); - entity.setServer(server); + subscriber.onNext(0); + } + }) + .subscribeOn(Schedulers.io()) + .observeOn(AndroidSchedulers.mainThread()) + .subscribe(new Response(){ + @Override + public void onResponse(Integer response) { + super.onResponse(response); + if (response == 0) { + notifyDataSetChanged(); + } else if (response == 1) { + ViewGroup.LayoutParams params = viewHolder.kaifuRl.getLayoutParams(); + params.height = ((curDayData.size() / 7) - 1) * DisplayUtils.dip2px(mContext, 46) + + DisplayUtils.dip2px(mContext, 26); + viewHolder.kaifuRl.setLayoutParams(params); + } } - } - } - } - mHandler.sendEmptyMessage(0); + @Override + public void onFailure(HttpException e) { + super.onFailure(e); + Utils.toast(mContext, "开服表日历初始化异常"); + } + }); } - public int getWeekByDay(int year, int month) { + private int getWeekByDay(int year, int month) { Calendar calendar = Calendar.getInstance(); calendar.set(Calendar.YEAR, year); calendar.set(Calendar.MONTH, month - 1); @@ -279,7 +284,7 @@ public class GameDetailKaiFuAdapter extends BaseRecyclerAdapter { return dayOfWeek; } - public int getDaysByYearMonth(int year, int month) { + private int getDaysByYearMonth(int year, int month) { Calendar a = Calendar.getInstance(); a.set(Calendar.YEAR, year); @@ -345,7 +350,8 @@ public class GameDetailKaiFuAdapter extends BaseRecyclerAdapter { if (entity.getServer().size() == 1) { viewHolder.calendarKaifu.setText("开服"); } else { - viewHolder.calendarKaifu.setText("开服x" + entity.getServer().size()); + viewHolder.calendarKaifu.setText(StringUtils.buildString("开服x" + , String.valueOf(entity.getServer().size()))); } @@ -375,11 +381,11 @@ public class GameDetailKaiFuAdapter extends BaseRecyclerAdapter { } long l = entity.getServer().get(0).getTime() * 1000; - SimpleDateFormat format = new SimpleDateFormat("M月d日"); - SimpleDateFormat curformat = new SimpleDateFormat("yyyy年M月d日"); - SimpleDateFormat formatTime = new SimpleDateFormat("HH:mm"); + SimpleDateFormat format = new SimpleDateFormat("M月d日", Locale.CHINA); + SimpleDateFormat curformat = new SimpleDateFormat("yyyy年M月d日", Locale.CHINA); + SimpleDateFormat formatTime = new SimpleDateFormat("HH:mm", Locale.CHINA); viewHolder.kaifuDetailRl.setVisibility(View.VISIBLE); - viewHolder.detailTime.setText(format.format(l) + "开服"); + viewHolder.detailTime.setText(StringUtils.buildString(format.format(l), "开服")); viewHolder.detailList.removeAllViews(); for (KaiFuServerEntity kaiFuServerEntity : entity.getServer()) { @@ -412,7 +418,7 @@ public class GameDetailKaiFuAdapter extends BaseRecyclerAdapter { TextView week; - public WeekViewHolder(View itemView) { + WeekViewHolder(View itemView) { super(itemView); week = (TextView) itemView; } diff --git a/app/src/main/java/com/gh/gamecenter/gamedetail/XinXiAdapter.java b/app/src/main/java/com/gh/gamecenter/gamedetail/XinXiAdapter.java index 7cb7f6ce67..52a215f263 100644 --- a/app/src/main/java/com/gh/gamecenter/gamedetail/XinXiAdapter.java +++ b/app/src/main/java/com/gh/gamecenter/gamedetail/XinXiAdapter.java @@ -16,6 +16,7 @@ import android.widget.TextView; import com.facebook.drawee.view.SimpleDraweeView; import com.gh.base.AppController; +import com.gh.common.util.ApkActiveUtils; import com.gh.common.util.DataCollectionUtils; import com.gh.common.util.DataUtils; import com.gh.common.util.DisplayUtils; @@ -158,6 +159,7 @@ public class XinXiAdapter extends BaseRecyclerAdapter { .subscribe(new Response() { @Override public void onNext(GameEntity response) { + ApkActiveUtils.filterHideApk(response); result.add(response); } 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 0b29732e41..43968242d4 100644 --- a/app/src/main/java/com/gh/gamecenter/manager/PackageManager.java +++ b/app/src/main/java/com/gh/gamecenter/manager/PackageManager.java @@ -199,4 +199,20 @@ public class PackageManager { return getUpdateList().size(); } + /** + * 判断包名是否可以插件化 + */ + public static boolean isCanPluggable(String gameId, String packageName) { + ArrayList updateList = getUpdateList(); + if (updateList.size() != 0) { + for (GameUpdateEntity entity : updateList) { + if (entity.isPluggable() + && entity.getId().equals(gameId) + && entity.getPackageName().equals(packageName)) { + return true; + } + } + } + return false; + } } diff --git a/app/src/main/java/com/gh/gamecenter/news/News2Fragment.java b/app/src/main/java/com/gh/gamecenter/news/News2Fragment.java index 5d07dcb078..26546e783d 100644 --- a/app/src/main/java/com/gh/gamecenter/news/News2Fragment.java +++ b/app/src/main/java/com/gh/gamecenter/news/News2Fragment.java @@ -16,6 +16,7 @@ import butterknife.OnClick; import com.facebook.drawee.view.SimpleDraweeView; import com.gc.materialdesign.views.ProgressBarCircularIndeterminate; import com.gh.base.BaseFragment; +import com.gh.common.util.ApkActiveUtils; import com.gh.common.util.ImageUtils; import com.gh.common.util.PackageUtils; import com.gh.common.view.VerticalItemDecoration; @@ -269,6 +270,7 @@ public class News2Fragment extends BaseFragment implements SwipeRefreshLayout.On if (response.getId().equals("5618b86e8ab49e17088b4575")) { recommendGameList.add(response); } else { + ApkActiveUtils.filterHideApk(response); gameList.add(response); } } 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 95de5306b1..2f57fa6eee 100644 --- a/app/src/main/java/com/gh/gamecenter/personal/ConcernFragmentAdapter.java +++ b/app/src/main/java/com/gh/gamecenter/personal/ConcernFragmentAdapter.java @@ -9,6 +9,7 @@ import android.view.View; import android.view.ViewGroup; import com.gh.common.constant.ItemViewType; +import com.gh.common.util.ApkActiveUtils; import com.gh.common.util.DataCollectionUtils; import com.gh.common.util.DataUtils; import com.gh.common.util.DisplayUtils; @@ -97,6 +98,7 @@ class ConcernFragmentAdapter extends BaseRecyclerAdapter { .subscribe(new Response() { @Override public void onNext(GameEntity response) { + ApkActiveUtils.filterHideApk(response); result.add(response); } 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 e8df6626ea..4e58590798 100644 --- a/app/src/main/java/com/gh/gamecenter/personal/InstallFragmentAdapter.java +++ b/app/src/main/java/com/gh/gamecenter/personal/InstallFragmentAdapter.java @@ -235,6 +235,7 @@ class InstallFragmentAdapter extends BaseRecyclerAdapter { .subscribe(new Response() { @Override public void onNext(GameEntity response) { + ApkActiveUtils.filterHideApk(response); result.add(response); } 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 658708e2d2..e092351632 100644 --- a/app/src/main/java/com/gh/gamecenter/search/SearchGameDetailFragmentAdapter.java +++ b/app/src/main/java/com/gh/gamecenter/search/SearchGameDetailFragmentAdapter.java @@ -71,6 +71,9 @@ class SearchGameDetailFragmentAdapter extends BaseRecyclerAdapter { @Override public void onResponse(List response) { if (response.size() != 0) { + for (GameEntity gameEntity : response) { + ApkActiveUtils.filterHideApk(gameEntity); + } if (listener != null) { listener.loadDone(); } 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 0d8d1fd423..fd5a5dd821 100644 --- a/app/src/main/java/com/gh/gamecenter/search/SearchGameListFragmentAdapter.java +++ b/app/src/main/java/com/gh/gamecenter/search/SearchGameListFragmentAdapter.java @@ -11,6 +11,7 @@ import android.view.ViewGroup; import android.view.inputmethod.InputMethodManager; import com.gh.common.constant.ItemViewType; +import com.gh.common.util.ApkActiveUtils; import com.gh.common.util.DownloadItemUtils; import com.gh.common.util.GameUtils; import com.gh.common.util.GameViewUtils; @@ -85,6 +86,9 @@ class SearchGameListFragmentAdapter extends BaseRecyclerAdapter { @Override public void onResponse(List response) { if (response.size() != 0) { + for (GameEntity gameEntity : response) { + ApkActiveUtils.filterHideApk(gameEntity); + } if (listener != null) { listener.loadDone(); } diff --git a/app/src/main/java/com/gh/gamecenter/subject/SubjectAdapter.java b/app/src/main/java/com/gh/gamecenter/subject/SubjectAdapter.java index 4d9c77e420..52b2a8077e 100644 --- a/app/src/main/java/com/gh/gamecenter/subject/SubjectAdapter.java +++ b/app/src/main/java/com/gh/gamecenter/subject/SubjectAdapter.java @@ -10,6 +10,7 @@ import android.view.ViewGroup; import android.widget.Toast; import com.gh.common.constant.ItemViewType; +import com.gh.common.util.ApkActiveUtils; import com.gh.common.util.DataCollectionUtils; import com.gh.common.util.DataUtils; import com.gh.common.util.DisplayUtils; @@ -109,6 +110,8 @@ public class SubjectAdapter extends BaseRecyclerAdapter { // 黄壮华 初始化游戏状态 修改2015/8/15 entity.setEntryMap(DownloadManager.getInstance(mContext).getEntryMap(entity.getName())); manager.addOrUpdate(entity.getApk(), entity.getId(), entity.getName()); + + ApkActiveUtils.filterHideApk(entity); // 过滤隐藏apk } if (page == 1 && finalType.isEmpty()) { diff --git a/app/src/main/java/com/gh/gamecenter/subject/SubjectFragment.java b/app/src/main/java/com/gh/gamecenter/subject/SubjectFragment.java index 74911830d2..374b41554e 100644 --- a/app/src/main/java/com/gh/gamecenter/subject/SubjectFragment.java +++ b/app/src/main/java/com/gh/gamecenter/subject/SubjectFragment.java @@ -13,6 +13,7 @@ import android.widget.TextView; import com.gc.materialdesign.views.ProgressBarCircularIndeterminate; import com.gh.base.BaseFragment; +import com.gh.common.util.ApkActiveUtils; import com.gh.common.util.DownloadItemUtils; import com.gh.common.view.VerticalItemDecoration; import com.gh.download.DataWatcher; @@ -221,8 +222,9 @@ public class SubjectFragment extends BaseFragment { if (locationList != null) { GameEntity gameEntity; for (int location : locationList) { + gameEntity = adapter.getSubjectList().get(location); + ApkActiveUtils.filterHideApk(gameEntity); if ("安装".equals(busFour.getType())) { - gameEntity = adapter.getSubjectList().get(location); for (ApkEntity apkEntity : gameEntity.getApk()) { if (apkEntity.getPackageName().equals(busFour.getPackageName())) { if (gameEntity.getEntryMap() != null) { diff --git a/app/src/main/res/layout/activity_subject.xml b/app/src/main/res/layout/activity_subject.xml index 90adceba96..85cfcbd1bb 100644 --- a/app/src/main/res/layout/activity_subject.xml +++ b/app/src/main/res/layout/activity_subject.xml @@ -27,7 +27,12 @@ android:layout_width="match_parent" android:layout_height="match_parent" /> - + +