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 acbe944dee..c653fe1bed 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,7 @@ public class DownloadItemUtils { ArrayMap entryMap = entity.getEntryMap(); if (entryMap != null && !entryMap.isEmpty()) { - DownloadEntity downloadEntity = entryMap.get(entity.getApk().get(0).getPlatform()); + DownloadEntity downloadEntity = entryMap.get(entryMap.keyAt(0)); if (downloadEntity != null && (!entity.isPluggable() || entity.getApk().get(0).getPlatform().equals( diff --git a/app/src/main/java/com/gh/common/util/RandomUtils.java b/app/src/main/java/com/gh/common/util/RandomUtils.java index 96c0216b96..2de48acbec 100644 --- a/app/src/main/java/com/gh/common/util/RandomUtils.java +++ b/app/src/main/java/com/gh/common/util/RandomUtils.java @@ -17,7 +17,7 @@ public class RandomUtils { if (i == 0) { index[i] = random.nextInt(size); } else { - random(random, index, i, size); + index[i] = random(random, index, i, size); } } return index; diff --git a/app/src/main/java/com/gh/download/DownloadManager.java b/app/src/main/java/com/gh/download/DownloadManager.java index a8ab8fcd0a..83c1effe83 100644 --- a/app/src/main/java/com/gh/download/DownloadManager.java +++ b/app/src/main/java/com/gh/download/DownloadManager.java @@ -5,10 +5,12 @@ import android.content.Intent; import android.os.Handler; import android.os.Message; import android.support.v4.util.ArrayMap; +import android.text.TextUtils; import android.widget.Toast; import com.gh.common.constant.Constants; import com.gh.common.util.FileUtils; +import com.gh.common.util.PlatformUtils; import com.gh.common.util.Utils; import java.io.File; diff --git a/app/src/main/java/com/gh/gamecenter/ConcernActivity.java b/app/src/main/java/com/gh/gamecenter/ConcernActivity.java index 6e23630807..68f99fc7be 100644 --- a/app/src/main/java/com/gh/gamecenter/ConcernActivity.java +++ b/app/src/main/java/com/gh/gamecenter/ConcernActivity.java @@ -127,6 +127,7 @@ public class ConcernActivity extends BaseActivity implements OnClickListener { Type listType = new TypeToken>() {}.getType(); Gson gson = new Gson(); List list = gson.fromJson(response.toString(), listType); + recommendList.clear(); for (int i = 0, size = list.size(); i < size; i++) { if (!manager.isConcern(list.get(i).getId())) { recommendList.add(list.get(i)); @@ -186,6 +187,7 @@ public class ConcernActivity extends BaseActivity implements OnClickListener { for (int i = 0; i < data.size(); i++) { gameList.add(gson.fromJson(data.get(i).toString(), GameEntity.class)); } + concernList.clear(); for (int i = 0, sizei = list.size(); i < sizei; i++) { for (int j = 0, sizej = gameList.size(); j < sizej; j++) { if (list.get(i).getId().equals(gameList.get(j).getId())) { @@ -197,79 +199,16 @@ public class ConcernActivity extends BaseActivity implements OnClickListener { concern_rv_show.getAdapter().notifyDataSetChanged(); } - private class ConcernViewHolder extends RecyclerView.ViewHolder implements - OnClickListener { + private class ConcernViewHolder extends RecyclerView.ViewHolder { private ImageView concern_item_icon; private TextView concern_item_name, concern_item_btn; - private View view; public ConcernViewHolder(View convertView) { super(convertView); concern_item_icon = (ImageView) convertView.findViewById(R.id.concern_item_icon); concern_item_name = (TextView) convertView.findViewById(R.id.concern_item_name); concern_item_btn = (TextView) convertView.findViewById(R.id.concern_item_btn); - concern_item_btn.setOnClickListener(this); - convertView.setOnClickListener(this); - view = convertView; - } - - @Override - public void onClick(View v) { - final int position = getPosition(); - if (v == concern_item_btn) { - // 删除关注表中的数据,并更新界面 - DialogUtils.showCancelDialog(ConcernActivity.this, new DialogUtils.ConfiremListener() { - @Override - public void onConfirem() { - if (manager.findConcernById(list.get(position).getId()) != null) { - ConcernInfo concernInfo = list.remove(position); - - Map kv = new HashMap<>(); - kv.put("状态", "取消关注"); - DataUtils.onEvent(ConcernActivity.this, "游戏关注", concernInfo.getGameName(), kv); - - Map map = new HashMap<>(); - map.put("game", concernInfo.getGameName()); - map.put("game_id", concernInfo.getId()); - map.put("type", "取消关注"); - DataCollectionManager.onEvent(ConcernActivity.this, "concern", map); - - manager.deleteConcern(concernInfo.getId()); - concernList.remove(position); - concern_rv_show.getAdapter().notifyItemRemoved(position); - if (list.isEmpty()) { - reuse_none_data.setVisibility(View.VISIBLE); - concern_rv_show.setVisibility(View.GONE); - } - concern_item_btn.setClickable(false); - view.setClickable(false); - - recommendList = new ArrayList<>(); - initRecommendGame(); - } else { - toast("取消失败,请稍后再试"); - } - } - }); - } else { - if (concernList != null && !concernList.isEmpty()) { - GameEntity gameEntity = concernList.get(position); - - Map map = new HashMap<>(); - map.put("location", "关注列表"); - map.put("game", gameEntity.getName()); - map.put("game_id", gameEntity.getId()); - map.put("page", "我的关注"); - DataCollectionManager.onEvent(ConcernActivity.this, "click-item", map); - - AppController.put("GameEntity", gameEntity); - Intent intent = new Intent(ConcernActivity.this, GameDetailActivity.class); - intent.putExtra("entrance", "我的关注-列表"); - intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); - startActivity(intent); - } - } } } @@ -283,7 +222,7 @@ public class ConcernActivity extends BaseActivity implements OnClickListener { } @Override - public void onBindViewHolder(ConcernViewHolder holder, int position) { + public void onBindViewHolder(final ConcernViewHolder holder, int position) { ConcernInfo concernEntity = list.get(position); ImageUtils.getInstance(getApplicationContext()).display( concernEntity.getIcon(), holder.concern_item_icon); @@ -291,7 +230,67 @@ public class ConcernActivity extends BaseActivity implements OnClickListener { holder.concern_item_btn.setText("取消关注"); holder.concern_item_btn.setBackgroundResource(R.drawable.textview_cancel_style); holder.concern_item_btn.setClickable(true); - holder.view.setClickable(true); + holder.concern_item_btn.setOnClickListener(new OnClickListener() { + @Override + public void onClick(View v) { + // 删除关注表中的数据,并更新界面 + DialogUtils.showCancelDialog(ConcernActivity.this, new DialogUtils.ConfiremListener() { + @Override + public void onConfirem() { + if (manager.findConcernById(list.get(holder.getPosition()).getId()) != null) { + ConcernInfo concernInfo = list.remove(holder.getPosition()); + + Map kv = new HashMap<>(); + kv.put("状态", "取消关注"); + DataUtils.onEvent(ConcernActivity.this, "游戏关注", concernInfo.getGameName(), kv); + + Map map = new HashMap<>(); + map.put("game", concernInfo.getGameName()); + map.put("game_id", concernInfo.getId()); + map.put("type", "取消关注"); + DataCollectionManager.onEvent(ConcernActivity.this, "concern", map); + + manager.deleteConcern(concernInfo.getId()); + concernList.remove(holder.getPosition()); + concern_rv_show.getAdapter().notifyItemRemoved(holder.getPosition()); + if (list.isEmpty()) { + reuse_none_data.setVisibility(View.VISIBLE); + concern_rv_show.setVisibility(View.GONE); + } + holder.concern_item_btn.setClickable(false); + view.setClickable(false); + + recommendList = new ArrayList<>(); + initRecommendGame(); + } else { + toast("取消失败,请稍后再试"); + } + } + }); + } + }); + holder.itemView.setClickable(true); + holder.itemView.setOnClickListener(new OnClickListener() { + @Override + public void onClick(View v) { + if (concernList != null && !concernList.isEmpty()) { + GameEntity gameEntity = concernList.get(holder.getPosition()); + + Map map = new HashMap<>(); + map.put("location", "关注列表"); + map.put("game", gameEntity.getName()); + map.put("game_id", gameEntity.getId()); + map.put("page", "我的关注"); + DataCollectionManager.onEvent(ConcernActivity.this, "click-item", map); + + AppController.put("GameEntity", gameEntity); + Intent intent = new Intent(ConcernActivity.this, GameDetailActivity.class); + intent.putExtra("entrance", "我的关注-列表"); + intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); + startActivity(intent); + } + } + }); } @Override @@ -448,7 +447,6 @@ public class ConcernActivity extends BaseActivity implements OnClickListener { if (list == null) { list = new ArrayList<>(); } - concernList = new ArrayList<>(); if (!list.isEmpty()) { reuse_none_data.setVisibility(View.GONE); concern_rv_show.setVisibility(View.VISIBLE); diff --git a/app/src/main/java/com/gh/gamecenter/GameDetailActivity.java b/app/src/main/java/com/gh/gamecenter/GameDetailActivity.java index c6dc171a95..e8f112ad40 100644 --- a/app/src/main/java/com/gh/gamecenter/GameDetailActivity.java +++ b/app/src/main/java/com/gh/gamecenter/GameDetailActivity.java @@ -35,6 +35,8 @@ import com.gh.download.DownloadManager; import com.gh.gamecenter.entity.ApkEntity; import com.gh.gamecenter.entity.GameEntity; import com.gh.gamecenter.eventbus.EBConcernChanged; +import com.gh.gamecenter.eventbus.EBDownloadStatus; +import com.gh.gamecenter.eventbus.EBPackage; import com.gh.gamecenter.eventbus.EBPutUrl; import com.gh.gamecenter.gamedetail.GameDetailAdapter; import com.gh.gamecenter.manager.DataCollectionManager; @@ -134,12 +136,6 @@ public class GameDetailActivity extends BaseActivity implements View.OnClickList gamedetail_tv_per.setOnClickListener(this); reuse_no_connection.setOnClickListener(this); - if (Config.isShow(this)) { - gamedetail_ll_bottom.setVisibility(View.VISIBLE); - } else { - gamedetail_ll_bottom.setVisibility(View.GONE); - } - if (gameEntity != null) { adapter.setGameEntity(gameEntity); adapter.getGameDetail(); @@ -171,6 +167,13 @@ public class GameDetailActivity extends BaseActivity implements View.OnClickList // 初始化bottom private void initDownload() { + if (Config.isShow(this)) { + gamedetail_ll_bottom.setVisibility(View.VISIBLE); + gamedetail_rv_show.setPadding(0, 0, 0, DisplayUtils.dip2px(this, 44)); + } else { + gamedetail_ll_bottom.setVisibility(View.GONE); + gamedetail_rv_show.setPadding(0, 0, 0, 0); + } if (gameEntity.getApk() == null || gameEntity.getApk().isEmpty()) { gamedetail_tv_download.setText("暂无下载"); gamedetail_tv_download.setBackgroundResource(R.drawable.game_item_btn_pause_style); @@ -186,14 +189,28 @@ public class GameDetailActivity extends BaseActivity implements View.OnClickList isInstalled = true; } if (isInstalled) { - gamedetail_tv_download.setBackgroundResource(R.drawable.game_item_btn_launch_style); - if (adapter.getGameDetailEntity() == null - || TextUtils.isEmpty(adapter.getGameDetailEntity().getDownloadAddWord())) { - gamedetail_tv_download.setText(String.format("启动《%s》", - gameEntity.getName())); + PackageManager mPackageManager = new PackageManager(this); + if (gameEntity.getTag() != null && gameEntity.getTag().size() != 0 + && !mPackageManager.isSignature(gameEntity.getApk().get(0).getPackageName())) { + gamedetail_tv_download.setBackgroundResource(R.drawable.game_item_btn_plugin_style); + if (adapter.getGameDetailEntity() == null + || TextUtils.isEmpty(adapter.getGameDetailEntity().getDownloadAddWord())) { + gamedetail_tv_download.setText(String.format("插件化《%s》", + gameEntity.getName())); + } else { + gamedetail_tv_download.setText(String.format("插件化《%s》%s", + gameEntity.getName(), adapter.getGameDetailEntity().getDownloadAddWord())); + } } else { - gamedetail_tv_download.setText(String.format("启动《%s》%s", - gameEntity.getName(), adapter.getGameDetailEntity().getDownloadAddWord())); + gamedetail_tv_download.setBackgroundResource(R.drawable.game_item_btn_launch_style); + if (adapter.getGameDetailEntity() == null + || TextUtils.isEmpty(adapter.getGameDetailEntity().getDownloadAddWord())) { + gamedetail_tv_download.setText(String.format("启动《%s》", + gameEntity.getName())); + } else { + gamedetail_tv_download.setText(String.format("启动《%s》%s", + gameEntity.getName(), adapter.getGameDetailEntity().getDownloadAddWord())); + } } return; } else if (gameEntity.getApk().size() == 1) { @@ -209,6 +226,7 @@ public class GameDetailActivity extends BaseActivity implements View.OnClickList } } } + gamedetail_tv_download.setBackgroundResource(R.drawable.game_item_btn_download_style); if (adapter.getGameDetailEntity() == null || TextUtils.isEmpty(adapter.getGameDetailEntity().getDownloadAddWord())) { gamedetail_tv_download.setText(String.format("下载《%s》", @@ -319,6 +337,7 @@ public class GameDetailActivity extends BaseActivity implements View.OnClickList gamedetail_tv_download.setVisibility(View.VISIBLE); gamedetail_progressbar.setVisibility(View.GONE); gamedetail_tv_per.setVisibility(View.GONE); + gamedetail_tv_download.setBackgroundResource(R.drawable.game_item_btn_download_style); if (adapter.getGameDetailEntity() == null || TextUtils.isEmpty(adapter.getGameDetailEntity().getDownloadAddWord())) { gamedetail_tv_download.setText(String.format("下载《%s》", @@ -410,6 +429,50 @@ public class GameDetailActivity extends BaseActivity implements View.OnClickList } } + public void onEventMainThread(EBPackage busFour) { + if (gameEntity != null && gameEntity.getApk().size() == 1) { + String packageName = gameEntity.getApk().get(0).getPackageName(); + if (packageName.equals(busFour.getPackageName())) { + if ("安装".equals(busFour.getType())) { + gamedetail_tv_download.setVisibility(View.VISIBLE); + gamedetail_progressbar.setVisibility(View.GONE); + gamedetail_tv_per.setVisibility(View.GONE); + gamedetail_tv_download.setBackgroundResource(R.drawable.game_item_btn_launch_style); + gamedetail_tv_download.setText(String.format("启动《%s》", gameEntity.getName())); + } else if ("卸载".equals(busFour.getType())) { + gamedetail_tv_download.setVisibility(View.VISIBLE); + gamedetail_progressbar.setVisibility(View.GONE); + gamedetail_tv_per.setVisibility(View.GONE); + gamedetail_tv_download.setBackgroundResource(R.drawable.game_item_btn_download_style); + gamedetail_tv_download.setText(String.format("下载《%s》", gameEntity.getName())); + } + } + } + } + + //接收下载被删除消息 + public void onEventMainThread(EBDownloadStatus status) { + if ("delete".equals(status.getStatus())) { + if (gameEntity != null && gameEntity.getApk().size() == 1) { + String url = gameEntity.getApk().get(0).getUrl(); + if (url.equals(status.getUrl())) { + gamedetail_tv_download.setVisibility(View.VISIBLE); + gamedetail_progressbar.setVisibility(View.GONE); + gamedetail_tv_per.setVisibility(View.GONE); + gamedetail_tv_download.setBackgroundResource(R.drawable.game_item_btn_download_style); + if (adapter.getGameDetailEntity() == null + || TextUtils.isEmpty(adapter.getGameDetailEntity().getDownloadAddWord())) { + gamedetail_tv_download.setText(String.format("下载《%s》", + gameEntity.getName())); + } else { + gamedetail_tv_download.setText(String.format("下载《%s》%s", + gameEntity.getName(), adapter.getGameDetailEntity().getDownloadAddWord())); + } + } + } + } + } + // 关注事件 public void onEventMainThread(EBConcernChanged changed) { if (!TextUtils.isEmpty(gameId) && changed.getGameId().equals(gameId)) { @@ -451,6 +514,7 @@ public class GameDetailActivity extends BaseActivity implements View.OnClickList gamedetail_tv_download.setVisibility(View.VISIBLE); gamedetail_progressbar.setVisibility(View.GONE); gamedetail_tv_per.setVisibility(View.GONE); + gamedetail_tv_download.setBackgroundResource(R.drawable.game_item_btn_launch_style); if (adapter.getGameDetailEntity() == null || TextUtils.isEmpty(adapter.getGameDetailEntity().getDownloadAddWord())) { gamedetail_tv_download.setText(String.format("启动《%s》", diff --git a/app/src/main/java/com/gh/gamecenter/MainActivity.java b/app/src/main/java/com/gh/gamecenter/MainActivity.java index 7d010ed375..caa7268ae3 100644 --- a/app/src/main/java/com/gh/gamecenter/MainActivity.java +++ b/app/src/main/java/com/gh/gamecenter/MainActivity.java @@ -269,6 +269,7 @@ public class MainActivity extends BaseFragmentActivity implements OnClickListene if (sp.getBoolean("autoinstall", true)) { if (FileUtils.isEmptyFile(downloadEntity.getPath())) { toast("解析包错误"); + DownloadManager.getInstance(MainActivity.this).cancel(downloadEntity.getUrl()); } else { PackageManager manager = new PackageManager( getApplicationContext()); @@ -743,100 +744,102 @@ public class MainActivity extends BaseFragmentActivity implements OnClickListene Runnable runnable = new Runnable() { @Override public void run() { - String to = getIntent().getExtras().getString("to"); - if(!TextUtils.isEmpty(to)){ - Intent toIntent = new Intent(getApplicationContext(), intentClass(to)); - if ("NewsDetailActivity".equals(to)) { - toIntent.putExtra("newsId", getIntent().getExtras().getString("newsId")); - toIntent.putExtra("entrance", getIntent().getExtras().getString("entrance")); - } else if("DownloadManagerActivity".equals(to)) { - toIntent.putExtra("packageName" , getIntent().getExtras().getString("packageName")); - toIntent.putExtra("currentItem" , 1); - } else if ("GameDetailActivity".equals(to)) { - toIntent.putExtra("gameId", getIntent().getExtras().getString("gameId")); - toIntent.putExtra("entrance", getIntent().getExtras().getString("entrance")); - } else if ("SubjectActivity".equals(to)) { - toIntent.putExtra("id", getIntent().getExtras().getString("id")); - toIntent.putExtra("name", getIntent().getExtras().getString("name")); - toIntent.putExtra("order", getIntent().getExtras().getBoolean("order")); - } else if ("ViewImageActivity".equals(to)) { - toIntent.putExtra("urls" , getIntent().getExtras().getStringArrayList("urls")); - toIntent.putExtra("current" , getIntent().getExtras().getInt("current",0)); - toIntent.putExtra("ScaleType" , getIntent().getExtras().getString("ScaleType")); - } - startActivity(toIntent); - } else { - String from = getIntent().getStringExtra("from"); - if (!TextUtils.isEmpty(from)) { - if (from.equals("plugin")) { - String packageName = getIntent().getStringExtra( - "packageName"); - Intent intent = new Intent(MainActivity.this, - DownloadManagerActivity.class); - intent.putExtra("currentItem", 1); - intent.putExtra("packageName", packageName); - startActivity(intent); - } else if (from.equals("mipush_news")) { - Intent intent = new Intent(MainActivity.this, - NewsDetailActivity.class); - intent.putExtra("entrance", "小米推送"); - intent.putExtra("entity", - getIntent().getSerializableExtra("entity")); - startActivity(intent); - } else if (from.equals("mipush_new_game")) { - Intent intent = new Intent(MainActivity.this, - GameDetailActivity.class); - intent.putExtra("entrance", "小米推送"); - startActivity(intent); - } else if (from.equals("mipush_plugin")) { - try { - JSONObject jsonObject = new JSONObject(getIntent() - .getStringExtra("data")); - JSONArray jsonArray = jsonObject.getJSONArray("apk"); - ArrayList list = new ArrayList<>(); - for (int i = 0; i < jsonArray.length(); i++) { - JSONObject apk = jsonArray.getJSONObject(i); - String packageName = apk.getString("package"); - if (PackageManager.isInstalled(packageName)) { - // 判断是否gh_version是否相同 - String gh_version = (String) PackageUtils - .getMetaData(getApplicationContext(), - packageName, "gh_version"); - if (gh_version != null) { - gh_version = gh_version.substring(2); - // 判断gh_version是否相同 - if (gh_version.equals(apk - .getString("gh_version"))) { - // 判断version是否相同 - String version = PackageUtils - .getVersionByPackage( - getApplicationContext(), - packageName); - if (version != null && version.equals(apk - .getString("version"))) { - // 版本相同,无需显示插件更新,继续查看是否有可更新的游戏包 - continue; - } - } - } - list.add(packageName); - } - } + if (getIntent() != null && getIntent().getExtras() != null) { + String to = getIntent().getExtras().getString("to"); + if(!TextUtils.isEmpty(to)){ + Intent toIntent = new Intent(getApplicationContext(), intentClass(to)); + if ("NewsDetailActivity".equals(to)) { + toIntent.putExtra("newsId", getIntent().getExtras().getString("newsId")); + toIntent.putExtra("entrance", getIntent().getExtras().getString("entrance")); + } else if("DownloadManagerActivity".equals(to)) { + toIntent.putExtra("packageName" , getIntent().getExtras().getString("packageName")); + toIntent.putExtra("currentItem" , 1); + } else if ("GameDetailActivity".equals(to)) { + toIntent.putExtra("gameId", getIntent().getExtras().getString("gameId")); + toIntent.putExtra("entrance", getIntent().getExtras().getString("entrance")); + } else if ("SubjectActivity".equals(to)) { + toIntent.putExtra("id", getIntent().getExtras().getString("id")); + toIntent.putExtra("name", getIntent().getExtras().getString("name")); + toIntent.putExtra("order", getIntent().getExtras().getBoolean("order")); + } else if ("ViewImageActivity".equals(to)) { + toIntent.putExtra("urls" , getIntent().getExtras().getStringArrayList("urls")); + toIntent.putExtra("current" , getIntent().getExtras().getInt("current",0)); + toIntent.putExtra("ScaleType" , getIntent().getExtras().getString("ScaleType")); + } + startActivity(toIntent); + } else { + String from = getIntent().getStringExtra("from"); + if (!TextUtils.isEmpty(from)) { + if (from.equals("plugin")) { + String packageName = getIntent().getStringExtra( + "packageName"); Intent intent = new Intent(MainActivity.this, DownloadManagerActivity.class); intent.putExtra("currentItem", 1); - intent.putExtra("isPushIntent", true); + intent.putExtra("packageName", packageName); startActivity(intent); - } catch (JSONException e) { + } else if (from.equals("mipush_news")) { + Intent intent = new Intent(MainActivity.this, + NewsDetailActivity.class); + intent.putExtra("entrance", "小米推送"); + intent.putExtra("entity", + getIntent().getSerializableExtra("entity")); + startActivity(intent); + } else if (from.equals("mipush_new_game")) { + Intent intent = new Intent(MainActivity.this, + GameDetailActivity.class); + intent.putExtra("entrance", "小米推送"); + startActivity(intent); + } else if (from.equals("mipush_plugin")) { + try { + JSONObject jsonObject = new JSONObject(getIntent() + .getStringExtra("data")); + JSONArray jsonArray = jsonObject.getJSONArray("apk"); + ArrayList list = new ArrayList<>(); + for (int i = 0; i < jsonArray.length(); i++) { + JSONObject apk = jsonArray.getJSONObject(i); + String packageName = apk.getString("package"); + if (PackageManager.isInstalled(packageName)) { + // 判断是否gh_version是否相同 + String gh_version = (String) PackageUtils + .getMetaData(getApplicationContext(), + packageName, "gh_version"); + if (gh_version != null) { + gh_version = gh_version.substring(2); + // 判断gh_version是否相同 + if (gh_version.equals(apk + .getString("gh_version"))) { + // 判断version是否相同 + String version = PackageUtils + .getVersionByPackage( + getApplicationContext(), + packageName); + if (version != null && version.equals(apk + .getString("version"))) { + // 版本相同,无需显示插件更新,继续查看是否有可更新的游戏包 + continue; + } + } + } + list.add(packageName); + } + } + Intent intent = new Intent(MainActivity.this, + DownloadManagerActivity.class); + intent.putExtra("currentItem", 1); + intent.putExtra("isPushIntent", true); + startActivity(intent); + } catch (JSONException e) { - e.printStackTrace(); + e.printStackTrace(); + } + } else if (from.equals("plugin_install")) { + Intent intent = new Intent(MainActivity.this, + DownloadManagerActivity.class); + intent.putExtra("currentItem", 0); + intent.putExtra("path", getIntent().getStringExtra("path")); + startActivity(intent); } - } else if (from.equals("plugin_install")) { - Intent intent = new Intent(MainActivity.this, - DownloadManagerActivity.class); - intent.putExtra("currentItem", 0); - intent.putExtra("path", getIntent().getStringExtra("path")); - startActivity(intent); } } } diff --git a/app/src/main/java/com/gh/gamecenter/NewsDetailActivity.java b/app/src/main/java/com/gh/gamecenter/NewsDetailActivity.java index a2d6a49316..deac94f995 100644 --- a/app/src/main/java/com/gh/gamecenter/NewsDetailActivity.java +++ b/app/src/main/java/com/gh/gamecenter/NewsDetailActivity.java @@ -176,14 +176,6 @@ public class NewsDetailActivity extends BaseActivity implements OnClickListener start = Calendar.getInstance().getTimeInMillis(); - if (Config.isShow(this)) { - newsdetail_ll_bottom.setVisibility(View.VISIBLE); - newsdetail_rv_show.setPadding(0, 0, 0, DisplayUtils.dip2px(getApplicationContext(), 44)); - } else { - newsdetail_ll_bottom.setVisibility(View.GONE); - newsdetail_rv_show.setPadding(0, 0, 0, 0); - } - View view = getWindow().findViewById(Window.ID_ANDROID_CONTENT); if (view != null) { view.setOnClickListener(new OnClickListener() { @@ -418,8 +410,7 @@ public class NewsDetailActivity extends BaseActivity implements OnClickListener } private void download() { - if (newsdetail_tv_download.getText().toString() - .contains("启动")) { + if (newsdetail_tv_download.getText().toString().contains("启动")) { Map kv = new HashMap<>(); kv.put("版本", gameEntity.getApk().get(0) @@ -551,6 +542,13 @@ public class NewsDetailActivity extends BaseActivity implements OnClickListener } private void initDownload() { + if (Config.isShow(this)) { + newsdetail_ll_bottom.setVisibility(View.VISIBLE); + newsdetail_rv_show.setPadding(0, 0, 0, DisplayUtils.dip2px(getApplicationContext(), 44)); + } else { + newsdetail_ll_bottom.setVisibility(View.GONE); + newsdetail_rv_show.setPadding(0, 0, 0, 0); + } if (gameEntity == null || "光环助手".equals(gameEntity.getName())) { newsdetail_ll_bottom.setVisibility(View.GONE); newsdetail_rv_show.setPadding(0, 0, 0, 0); @@ -567,8 +565,17 @@ public class NewsDetailActivity extends BaseActivity implements OnClickListener newsdetail_progressbar.setVisibility(View.GONE); newsdetail_tv_per.setVisibility(View.GONE); if (isInstalled) { - newsdetail_tv_download.setText(String.format("启动《%s》", gameEntity.getName())); + PackageManager mPackageManager = new PackageManager(this); + if (gameEntity.getTag() != null && gameEntity.getTag().size() != 0 + && !mPackageManager.isSignature(gameEntity.getApk().get(0).getPackageName())) { + newsdetail_tv_download.setBackgroundResource(R.drawable.game_item_btn_plugin_style); + newsdetail_tv_download.setText(String.format("插件化《%s》", gameEntity.getName())); + } else { + newsdetail_tv_download.setBackgroundResource(R.drawable.game_item_btn_launch_style); + newsdetail_tv_download.setText(String.format("启动《%s》", gameEntity.getName())); + } } else { + newsdetail_tv_download.setBackgroundResource(R.drawable.game_item_btn_download_style); newsdetail_tv_download.setText(String.format("下载《%s》", gameEntity.getName())); } } else { @@ -576,8 +583,17 @@ public class NewsDetailActivity extends BaseActivity implements OnClickListener newsdetail_progressbar.setVisibility(View.GONE); newsdetail_tv_per.setVisibility(View.GONE); if (isInstalled) { - newsdetail_tv_download.setText(String.format("启动《%s》%s", gameEntity.getName(), gameEntity.getDownloadAddWord())); + PackageManager mPackageManager = new PackageManager(this); + if (gameEntity.getTag() != null && gameEntity.getTag().size() != 0 + && !mPackageManager.isSignature(gameEntity.getApk().get(0).getPackageName())) { + newsdetail_tv_download.setBackgroundResource(R.drawable.game_item_btn_plugin_style); + newsdetail_tv_download.setText(String.format("插件化《%s》%s", gameEntity.getName(), gameEntity.getDownloadAddWord())); + } else { + newsdetail_tv_download.setBackgroundResource(R.drawable.game_item_btn_launch_style); + newsdetail_tv_download.setText(String.format("启动《%s》%s", gameEntity.getName(), gameEntity.getDownloadAddWord())); + } } else { + newsdetail_tv_download.setBackgroundResource(R.drawable.game_item_btn_download_style); newsdetail_tv_download.setText(String.format("下载《%s》%s", gameEntity.getName(), gameEntity.getDownloadAddWord())); } } @@ -643,11 +659,13 @@ public class NewsDetailActivity extends BaseActivity implements OnClickListener newsdetail_tv_download.setVisibility(View.VISIBLE); newsdetail_progressbar.setVisibility(View.GONE); newsdetail_tv_per.setVisibility(View.GONE); + newsdetail_tv_download.setBackgroundResource(R.drawable.game_item_btn_launch_style); newsdetail_tv_download.setText(String.format("启动《%s》", gameEntity.getName())); } else if ("卸载".equals(busFour.getType())) { newsdetail_tv_download.setVisibility(View.VISIBLE); newsdetail_progressbar.setVisibility(View.GONE); newsdetail_tv_per.setVisibility(View.GONE); + newsdetail_tv_download.setBackgroundResource(R.drawable.game_item_btn_download_style); newsdetail_tv_download.setText(String.format("下载《%s》", gameEntity.getName())); } } @@ -708,7 +726,7 @@ public class NewsDetailActivity extends BaseActivity implements OnClickListener newsdetail_tv_download.setVisibility(View.VISIBLE); newsdetail_progressbar.setVisibility(View.GONE); newsdetail_tv_per.setVisibility(View.GONE); - newsdetail_tv_download.setBackgroundResource( R.drawable.game_item_btn_launch_style); + newsdetail_tv_download.setBackgroundResource(R.drawable.game_item_btn_launch_style); if (TextUtils.isEmpty(gameEntity.getDownloadAddWord())) { newsdetail_tv_download.setText(String.format("启动《%s》", gameEntity.getName())); } else { diff --git a/app/src/main/java/com/gh/gamecenter/SplashScreenActivity.java b/app/src/main/java/com/gh/gamecenter/SplashScreenActivity.java index 8555181d93..e1de720b61 100644 --- a/app/src/main/java/com/gh/gamecenter/SplashScreenActivity.java +++ b/app/src/main/java/com/gh/gamecenter/SplashScreenActivity.java @@ -6,7 +6,9 @@ import android.content.Context; import android.content.Intent; import android.content.SharedPreferences; import android.content.SharedPreferences.Editor; +import android.net.Uri; import android.os.Bundle; +import android.provider.Settings; import android.support.v4.util.ArrayMap; import android.support.v4.view.PagerAdapter; import android.support.v4.view.ViewPager; @@ -373,6 +375,15 @@ public class SplashScreenActivity extends BaseActivity { private void getInstalledListFromServer(final boolean isFirst) { List list = PackageManager.getLocalPackageName(getApplicationContext()); + if (list.isEmpty()) { + // 跳转应用信息界面 +// Intent intent = new Intent(Settings.ACTION_APPLICATION_DETAILS_SETTINGS); +// Uri uri = Uri.fromParts("package", getPackageName(), null); +// intent.setData(uri); +// startActivity(intent); + update(); + return; + } final int count = list.size(); final List data = new ArrayList<>(); final List useParams = new ArrayList<>(); 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 f8a785f9ac..d3063512d3 100644 --- a/app/src/main/java/com/gh/gamecenter/download/GameDownLoadFragment.java +++ b/app/src/main/java/com/gh/gamecenter/download/GameDownLoadFragment.java @@ -1,5 +1,6 @@ package com.gh.gamecenter.download; +import android.content.Intent; import android.os.Bundle; import android.os.Message; import android.support.annotation.Nullable; @@ -21,11 +22,13 @@ import com.gh.download.DataWatcher; import com.gh.download.DownloadEntity; import com.gh.download.DownloadManager; import com.gh.download.DownloadStatus; +import com.gh.gamecenter.MainActivity; import com.gh.gamecenter.R; import com.gh.gamecenter.eventbus.EBDownloadChanged; import com.gh.gamecenter.eventbus.EBMiPush; import com.gh.gamecenter.eventbus.EBPackage; import com.gh.gamecenter.eventbus.EBShowDone; +import com.gh.gamecenter.eventbus.EBSkip; import com.gh.gamecenter.eventbus.EBUISwitch; import java.util.ArrayList; @@ -68,23 +71,25 @@ public class GameDownLoadFragment extends Fragment implements View.OnClickListen if (downloadEntity.getStatus().equals(DownloadStatus.done)) { // 删除下载中列表对应数据 adapter.getDownloadingList().remove(location.intValue()); - if (adapter.getDownloadingList().isEmpty()) { - adapter.notifyItemRangeRemoved(base, 2); - } else { - adapter.notifyItemRemoved(base + location); - } +// if (adapter.getDownloadingList().isEmpty()) { +// adapter.notifyItemRangeRemoved(base, 2); +// } else { +// adapter.notifyItemRemoved(base + location); +// } // 添加进已完成列表 adapter.getDoneList().add(downloadEntity); - if (adapter.getDoneList().size() == 1) { - adapter.notifyItemRangeInserted(0, 2); - } else { - adapter.notifyItemInserted(adapter.getDoneList().size() + 1); - } +// if (adapter.getDoneList().size() == 1) { +// adapter.notifyItemRangeInserted(0, 2); +// } else { +// adapter.notifyItemInserted(adapter.getDoneList().size() + 1); +// } urlMap.put(PackageUtils.getPackageNameByPath(getActivity(), downloadEntity.getPath()), downloadEntity.getUrl()); - adapter.notifyItemChanged(base - 1); +// adapter.notifyItemChanged(base - 1); + + adapter.notifyDataSetChanged(); } else { adapter.getDownloadingList().set(location, downloadEntity); adapter.notifyItemChanged(base + location); @@ -152,7 +157,20 @@ public class GameDownLoadFragment extends Fragment implements View.OnClickListen reuse_nodata_skip_tv_btn.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { - getActivity().finish(); + Intent intent = new Intent(getActivity(), MainActivity.class); + intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); + getActivity().startActivity(intent); + new Thread(){ + @Override + public void run() { + try { + sleep(300); + } catch (InterruptedException e) { + e.printStackTrace(); + } + EventBus.getDefault().post(new EBSkip("GameFragment", 0)); + } + }.start(); } }); diff --git a/app/src/main/java/com/gh/gamecenter/download/GameDownloadAdapter.java b/app/src/main/java/com/gh/gamecenter/download/GameDownloadAdapter.java index 2e0596b8d5..5b7e367019 100644 --- a/app/src/main/java/com/gh/gamecenter/download/GameDownloadAdapter.java +++ b/app/src/main/java/com/gh/gamecenter/download/GameDownloadAdapter.java @@ -19,6 +19,7 @@ import com.gh.common.util.DialogUtils; import com.gh.common.util.DisplayUtils; import com.gh.common.util.FileUtils; import com.gh.common.util.ImageUtils; +import com.gh.common.util.NetworkUtils; import com.gh.common.util.PackageUtils; import com.gh.common.util.PlatformUtils; import com.gh.common.util.SpeedUtils; @@ -91,7 +92,7 @@ public class GameDownloadAdapter extends RecyclerView.Adapter 0 && position <= doneList.size()) { - doneList.remove(position - 1); - if (doneList.isEmpty()) { - isDoneEmpty = true; - } - } else if (doneList.isEmpty()) { - downloadingList.remove(position - 1); - if (downloadingList.isEmpty()) { - isDownloadingEmpty = true; - } - } else { - downloadingList.remove(position - doneList.size() - 2); - if (downloadingList.isEmpty()) { - isDownloadingEmpty = true; - } - } - - if (doneList.isEmpty() && downloadingList.isEmpty()) { - EventBus.getDefault().post(new EBDownloadChanged("download", View.GONE, 0)); - locationMap.clear(); - notifyDataSetChanged(); - if (downloadmanager_tv_none.getVisibility() == View.GONE) { - downloadmanager_tv_none.setVisibility(View.VISIBLE); - } - } else if (isDoneEmpty) { - EventBus.getDefault().post(new EBDownloadChanged("download", View.VISIBLE, - doneList.size() + downloadingList.size())); - notifyItemRangeRemoved(0, 2); - } else if (isDownloadingEmpty) { - EventBus.getDefault().post(new EBDownloadChanged("download", View.VISIBLE, - doneList.size() + downloadingList.size())); - notifyItemRangeRemoved(doneList.isEmpty() ? 0 : 1 + doneList.size(), 2); - } else { - EventBus.getDefault().post(new EBDownloadChanged("download", View.VISIBLE, - doneList.size() + downloadingList.size())); - notifyItemRemoved(position); - } - - deleteList.add(entry.getUrl()); - statusMap.remove(entry.getUrl()); - locationMap.remove(entry.getUrl()); - initLocationMap(); - - notifyItemChanged(doneList.isEmpty() ? 0 : 1 + doneList.size()); - - DownloadManager.getInstance(context).cancel(entry.getUrl()); + removeDownload(entry, position); } }); } + private void removeDownload(DownloadEntity entry, int position) { + boolean isDoneEmpty = false; + boolean isDownloadingEmpty = false; + + if (doneList.size() != 0 && position > 0 && position <= doneList.size()) { + doneList.remove(position - 1); + if (doneList.isEmpty()) { + isDoneEmpty = true; + } + } else if (doneList.isEmpty()) { + downloadingList.remove(position - 1); + if (downloadingList.isEmpty()) { + isDownloadingEmpty = true; + } + } else { + downloadingList.remove(position - doneList.size() - 2); + if (downloadingList.isEmpty()) { + isDownloadingEmpty = true; + } + } + + if (doneList.isEmpty() && downloadingList.isEmpty()) { + EventBus.getDefault().post(new EBDownloadChanged("download", View.GONE, 0)); + locationMap.clear(); + notifyDataSetChanged(); + if (downloadmanager_tv_none.getVisibility() == View.GONE) { + downloadmanager_tv_none.setVisibility(View.VISIBLE); + } + } else if (isDoneEmpty) { + EventBus.getDefault().post(new EBDownloadChanged("download", View.VISIBLE, + doneList.size() + downloadingList.size())); + notifyItemRangeRemoved(0, 2); + } else if (isDownloadingEmpty) { + EventBus.getDefault().post(new EBDownloadChanged("download", View.VISIBLE, + doneList.size() + downloadingList.size())); + notifyItemRangeRemoved(doneList.isEmpty() ? 0 : 1 + doneList.size(), 2); + } else { + EventBus.getDefault().post(new EBDownloadChanged("download", View.VISIBLE, + doneList.size() + downloadingList.size())); + notifyItemRemoved(position); + } + + deleteList.add(entry.getUrl()); + statusMap.remove(entry.getUrl()); + locationMap.remove(entry.getUrl()); + initLocationMap(); + + notifyItemChanged(doneList.isEmpty() ? 0 : 1 + doneList.size()); + + DownloadManager.getInstance(context).cancel(entry.getUrl()); + } + private void initLocationMap() { for (int i = 0; i < doneList.size(); i++) { locationMap.put(doneList.get(i).getUrl(), i); 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 a91069b38d..0046e176c1 100644 --- a/app/src/main/java/com/gh/gamecenter/download/GameUpdateAdapter.java +++ b/app/src/main/java/com/gh/gamecenter/download/GameUpdateAdapter.java @@ -553,7 +553,7 @@ public class GameUpdateAdapter extends RecyclerView.Adapter kv = new HashMap(); + Map kv = new HashMap<>(); kv.put("版本", updateEntity.getPlatform()); kv.put("状态", "下载开始"); DataUtils.onEvent(context, "游戏更新", updateEntity.getName(), kv); @@ -567,7 +567,6 @@ public class GameUpdateAdapter extends RecyclerView.Adapter meta = new HashMap<>(); if (updateEntity.isPluggable()) { downloadEntity.setPluggable(true); } else { @@ -578,6 +577,8 @@ public class GameUpdateAdapter extends RecyclerView.Adapter 0 && viewType > 1 && viewType <= 1 + gameList.size()) { + if (gameList.size() > 0 && viewType >= 0 && viewType < gameList.size()) { View view = LayoutInflater.from(parent.getContext()).inflate( R.layout.game_normal_item, parent, false); return new GameNormalViewHolder(view); @@ -209,28 +195,28 @@ public class ConcernFragmentAdapter extends RecyclerView.Adapter position - 2) { - initGameNormal((GameNormalViewHolder) holder, gameList.get(position - 2), position - 2); + if (holder instanceof GameNormalViewHolder && gameList.size() > position) { + initGameNormal((GameNormalViewHolder) holder, gameList.get(position), position); } else if (holder instanceof ReuseViewHolder && position == getItemCount() - 1) { - ReuseViewHolder viewHolder = (ReuseViewHolder) holder; - - int height = 0; - LinearLayoutManager linearLayoutManager = (LinearLayoutManager) fm_concern_rv_show.getLayoutManager(); - if (linearLayoutManager.findFirstVisibleItemPosition() < 1) { - for (int i = 0, size = fm_concern_rv_show.getChildCount(); i < size; i++) { - height += fm_concern_rv_show.getChildAt(i).getMeasuredHeight(); - } - height = fm_concern_rv_show.getHeight() + DisplayUtils.dip2px(context, 229) - - DisplayUtils.getInternalDimensionSize(context.getResources(), "status_bar_height") - height; - if (height < 0) { - height = 0; - } - Utils.log("height = " + height); - } - - ViewGroup.LayoutParams params = new ViewGroup.LayoutParams( - ViewGroup.LayoutParams.MATCH_PARENT, height); - viewHolder.itemView.setLayoutParams(params); +// ReuseViewHolder viewHolder = (ReuseViewHolder) holder; +// +// int height = 0; +// LinearLayoutManager linearLayoutManager = (LinearLayoutManager) fm_concern_rv_show.getLayoutManager(); +// if (linearLayoutManager.findFirstVisibleItemPosition() < 1) { +// for (int i = 0, size = fm_concern_rv_show.getChildCount(); i < size; i++) { +// height += fm_concern_rv_show.getChildAt(i).getMeasuredHeight(); +// } +// height = fm_concern_rv_show.getHeight() + DisplayUtils.dip2px(context, 229) +// - DisplayUtils.getInternalDimensionSize(context.getResources(), "status_bar_height") - height; +// if (height < 0) { +// height = 0; +// } +// Utils.log("height = " + height); +// } +// +// ViewGroup.LayoutParams params = new ViewGroup.LayoutParams( +// ViewGroup.LayoutParams.MATCH_PARENT, height); +// viewHolder.itemView.setLayoutParams(params); } else if (holder instanceof NoDataSkipViewHolder) { NoDataSkipViewHolder viewHolder = (NoDataSkipViewHolder) holder; @@ -265,7 +251,7 @@ public class ConcernFragmentAdapter extends RecyclerView.Adapter ids = new ArrayList<>(); for (MyGameInfo info : sortedList) { @@ -290,7 +290,7 @@ public class InstallFragmentAdapter extends RecyclerView.Adapter 0 && viewType > 1 && viewType <= 1 + gameList.size()) { + if (gameList.size() > 0 && viewType >= 0 && viewType < gameList.size()) { View view = LayoutInflater.from(parent.getContext()).inflate( R.layout.game_normal_item, parent, false); return new GameNormalViewHolder(view); @@ -348,27 +334,27 @@ public class InstallFragmentAdapter extends RecyclerView.Adapter + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/drawable/game_item_btn_plugining_style.xml b/app/src/main/res/drawable/game_item_btn_plugining_style.xml index 4b22501013..f071790a09 100644 --- a/app/src/main/res/drawable/game_item_btn_plugining_style.xml +++ b/app/src/main/res/drawable/game_item_btn_plugining_style.xml @@ -1,13 +1,8 @@ - + - + + + - - - - - \ No newline at end of file + \ No newline at end of file diff --git a/app/src/main/res/drawable/game_item_btn_plugining_up.xml b/app/src/main/res/drawable/game_item_btn_plugining_up.xml new file mode 100644 index 0000000000..6874edcac5 --- /dev/null +++ b/app/src/main/res/drawable/game_item_btn_plugining_up.xml @@ -0,0 +1,9 @@ + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/activity_gamedetail.xml b/app/src/main/res/layout/activity_gamedetail.xml index 4dc152db35..dd1aa8ae51 100644 --- a/app/src/main/res/layout/activity_gamedetail.xml +++ b/app/src/main/res/layout/activity_gamedetail.xml @@ -13,8 +13,7 @@ + android:layout_height="match_parent"> + android:orientation="vertical" + android:visibility="gone"> diff --git a/app/src/main/res/layout/activity_setting.xml b/app/src/main/res/layout/activity_setting.xml index 4b96d1b597..9a516f7e0d 100644 --- a/app/src/main/res/layout/activity_setting.xml +++ b/app/src/main/res/layout/activity_setting.xml @@ -35,7 +35,7 @@ @@ -277,7 +279,8 @@ @@ -340,9 +343,10 @@ diff --git a/app/src/main/res/layout/home3_fragment.xml b/app/src/main/res/layout/home3_fragment.xml index a64fafff20..d28546b14c 100644 --- a/app/src/main/res/layout/home3_fragment.xml +++ b/app/src/main/res/layout/home3_fragment.xml @@ -1,14 +1,8 @@ - - - - + android:layout_height="match_parent" + android:orientation="vertical"> + android:layout_marginTop="12dp"/> @@ -139,4 +133,11 @@ - \ No newline at end of file + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/reuse_nodata_skip.xml b/app/src/main/res/layout/reuse_nodata_skip.xml index abf8adc334..ef6eb56bc0 100644 --- a/app/src/main/res/layout/reuse_nodata_skip.xml +++ b/app/src/main/res/layout/reuse_nodata_skip.xml @@ -23,7 +23,7 @@ android:text="查看精品推荐" android:textColor="@android:color/white" android:background="@drawable/textview_blue_style" - android:layout_marginTop="50dp" + android:layout_marginTop="35dp" android:textSize="16sp" /> \ No newline at end of file