package com.gh.common.util; import android.content.Intent; import android.support.v4.content.ContextCompat; import android.text.TextUtils; import android.view.View; import com.gh.common.constant.Config; import com.gh.common.view.DownloadDialog; import com.gh.download.DownloadManager; import com.gh.gamecenter.DownloadManagerActivity; import com.gh.gamecenter.R; import com.gh.gamecenter.adapter.viewholder.DetailViewHolder; import com.gh.gamecenter.entity.ApkEntity; import com.gh.gamecenter.entity.GameEntity; import com.gh.gamecenter.manager.PackageManager; import com.lightgame.download.DownloadEntity; import com.lightgame.download.FileUtils; import com.lightgame.utils.Utils; /** * Created by khy on 27/06/17. * 详情下载工具类 */ public class DetailDownloadUtils { public static void detailInitDownload(DetailViewHolder viewHolder, boolean isCheck) { if (Config.isShow(viewHolder.context)) { viewHolder.downloadBottom.setVisibility(View.VISIBLE); } else { viewHolder.downloadBottom.setVisibility(View.GONE); } if (viewHolder.gameEntity != null && "光环助手".equals(viewHolder.gameEntity.getName())) { viewHolder.downloadBottom.setVisibility(View.GONE); } else if (viewHolder.gameEntity == null || viewHolder.gameEntity.getApk().isEmpty()) { viewHolder.downloadTv.setVisibility(View.VISIBLE); viewHolder.downloadPb.setVisibility(View.GONE); viewHolder.downloadPer.setVisibility(View.GONE); if (TextUtils.isEmpty(viewHolder.downloadOffText)) { viewHolder.downloadTv.setText("暂无下载"); } else { viewHolder.downloadTv.setText(viewHolder.downloadOffText); } viewHolder.downloadTv.setBackgroundResource(R.drawable.game_item_btn_pause_style); viewHolder.downloadTv.setTextColor(0xFF999999); viewHolder.downloadTv.setClickable(false); } else { viewHolder.downloadTv.setVisibility(View.VISIBLE); viewHolder.downloadPb.setVisibility(View.GONE); viewHolder.downloadPer.setVisibility(View.GONE); boolean isInstalled = false; if (viewHolder.gameEntity.getApk().size() == 1 && PackageManager.isInstalled(viewHolder.gameEntity.getApk().get(0).getPackageName())) { isInstalled = true; } if (isInstalled) { if (PackageManager.isCanUpdate(viewHolder.gameEntity.getId(), viewHolder.gameEntity.getApk().get(0).getPackageName())) { if (viewHolder.isNewsDetail) { viewHolder.downloadTv.setText(R.string.update); } else if (TextUtils.isEmpty(viewHolder.downloadAddWord)) { viewHolder.downloadTv.setText(String.format("更新《%s》", viewHolder.gameEntity.getName())); } else { viewHolder.downloadTv.setText(String.format("更新《%s》%s", viewHolder.gameEntity.getName(), viewHolder.downloadAddWord)); } viewHolder.downloadTv.setBackgroundResource( R.drawable.game_item_btn_download_style); } else { if (viewHolder.gameEntity.getTag() != null && viewHolder.gameEntity.getTag().size() != 0 && !TextUtils.isEmpty(viewHolder.gameEntity.getApk().get(0).getGhVersion()) && !PackageUtils.isSignature(viewHolder.context, viewHolder.gameEntity.getApk().get(0).getPackageName())) { if (viewHolder.isNewsDetail) { viewHolder.downloadTv.setText(R.string.pluggable); } else if (TextUtils.isEmpty(viewHolder.downloadAddWord)) { viewHolder.downloadTv.setText(String.format("插件化《%s》", viewHolder.gameEntity.getName())); } else { viewHolder.downloadTv.setText(String.format("插件化《%s》%s", viewHolder.gameEntity.getName(), viewHolder.downloadAddWord)); } viewHolder.downloadTv.setBackgroundResource( R.drawable.game_item_btn_plugin_style); } else { if (viewHolder.isNewsDetail) { viewHolder.downloadTv.setText(R.string.launch); } else if (TextUtils.isEmpty(viewHolder.downloadAddWord)) { viewHolder.downloadTv.setText(String.format("启动《%s》", viewHolder.gameEntity.getName())); } else { viewHolder.downloadTv.setText(String.format("启动《%s》%s", viewHolder.gameEntity.getName(), viewHolder.downloadAddWord)); } viewHolder.downloadTv.setBackgroundResource( R.drawable.game_item_btn_launch_style); } } } else { String status = GameUtils.getDownloadBtnText(viewHolder.context, viewHolder.gameEntity); switch (status) { case "插件化": viewHolder.downloadTv.setBackgroundResource(R.drawable.game_item_btn_plugin_style); break; case "打开": viewHolder.downloadTv.setBackgroundResource(R.drawable.game_item_btn_launch_style); break; default: viewHolder.downloadTv.setBackgroundResource(R.drawable.game_item_btn_download_style); break; } if (viewHolder.isNewsDetail) { viewHolder.downloadTv.setText(status); } else if (TextUtils.isEmpty(viewHolder.downloadAddWord)) { viewHolder.downloadTv.setText(String.format(status + "《%s》", viewHolder.gameEntity.getName())); } else { viewHolder.downloadTv.setText(String.format(status + "《%s》%s", viewHolder.gameEntity.getName(), viewHolder.downloadAddWord)); } } } if (isCheck && viewHolder.gameEntity != null && viewHolder.gameEntity.getApk().size() == 1) { String url = viewHolder.gameEntity.getApk().get(0).getUrl(); DownloadEntity downloadEntity = DownloadManager.getInstance(viewHolder.context).getDownloadEntityByUrl(url); if (downloadEntity != null) { viewHolder.downloadEntity = downloadEntity; viewHolder.downloadTv.setVisibility(View.GONE); viewHolder.downloadPb.setVisibility(View.VISIBLE); viewHolder.downloadPer.setVisibility(View.VISIBLE); detailInvalidate(viewHolder); } } } public static void detailInvalidate(DetailViewHolder viewHolder) { viewHolder.downloadPb.setProgress((int) (viewHolder.downloadEntity.getPercent() * 10)); viewHolder.downloadPer.setTextColor(0xFFFFFFFF); DownloadEntity downloadEntity = viewHolder.downloadEntity; switch (downloadEntity.getStatus()) { case downloading: case pause: case timeout: case neterror: case waiting: viewHolder.downloadPer.setText(R.string.downloading); break; case done: viewHolder.downloadPer.setText("安装"); if (downloadEntity.isPluggable() && PackageManager.isInstalled(downloadEntity.getPackageName())) { viewHolder.downloadPb.setProgressDrawable(ContextCompat.getDrawable(viewHolder.context, R.drawable.progressbar_plugin_radius_style)); } else { viewHolder.downloadPb.setProgressDrawable(ContextCompat.getDrawable(viewHolder.context, R.drawable.progressbar_normal_radius_style)); } break; case cancel: case hijack: case notfound: detailInitDownload(viewHolder, false); break; default: break; } } public static class OnDetailDownloadClickListener implements View.OnClickListener { private DetailViewHolder mViewHolder; private GameEntity mGameEntity; private DownloadEntity mDownloadEntity; private String mEntrance; private String mName; private String mTitle; public OnDetailDownloadClickListener(DetailViewHolder viewHolder, String entrance, String name, String title) { mViewHolder = viewHolder; mGameEntity = viewHolder.gameEntity; mDownloadEntity = viewHolder.downloadEntity; mEntrance = entrance; mName = name; mTitle = title; } @Override public void onClick(View v) { if (v == mViewHolder.downloadTv) { if (mGameEntity != null && !mGameEntity.getApk().isEmpty()) { if (mGameEntity.getApk().size() == 1) { if (NetworkUtils.isWifiConnected(mViewHolder.context)) { download(); } else { DialogUtils.showDownloadDialog(mViewHolder.context, new DialogUtils.ConfirmListener() { @Override public void onConfirm() { download(); } }); } } else { DownloadDialog.getInstance(mViewHolder.context) .showPopupWindow(v, mGameEntity, StringUtils.buildString(mEntrance, "+(", mName, "[", mTitle, "])"), mName + ":" + mTitle); } } else { Utils.toast(mViewHolder.context, "稍等片刻~!游戏正在上传中..."); } } else if (v == mViewHolder.downloadPb || v == mViewHolder.downloadPer) { String str = mViewHolder.downloadPer.getText().toString(); if ("下载中".equals(str)) { Intent intent = DownloadManagerActivity.getDownloadMangerIntent(mViewHolder.context, mGameEntity.getApk().get(0).getUrl(), StringUtils.buildString(mEntrance, "+(", mName, "[", mTitle, "])")); mViewHolder.context.startActivity(intent); } else if ("安装".equals(str)) { if (mDownloadEntity == null) { mDownloadEntity = DownloadManager.getInstance(mViewHolder.context).getDownloadEntityByUrl( mGameEntity.getApk().get(0).getUrl()); } if (mDownloadEntity != null) { PackageUtils.launchSetup(mViewHolder.context, mDownloadEntity.getPath()); } } } } private void download() { String str = mViewHolder.downloadTv.getText().toString(); if (str.contains("启动")) { DataUtils.onGameLaunchEvent(mViewHolder.context, mGameEntity.getName(), mGameEntity.getApk().get(0).getPlatform(), mName); PackageUtils.launchApplicationByPackageName(mViewHolder.context, mGameEntity.getApk().get(0).getPackageName()); } else { String method; if (str.contains("更新")) { method = "更新"; } else if (str.contains("插件化")) { method = "插件化"; } else { method = mViewHolder.context.getString(R.string.download); } ApkEntity apkEntity = mGameEntity.getApk().get(0); String msg = FileUtils.isCanDownload(mViewHolder.context, apkEntity.getSize()); if (TextUtils.isEmpty(msg)) { DataUtils.onGameDownloadEvent(mViewHolder.context, mGameEntity.getName(), apkEntity.getPlatform(), StringUtils.buildString(mEntrance, "+(", mName, "[", mTitle, "])"), "下载开始"); DownloadManager.createDownload(mViewHolder.context, apkEntity, mGameEntity, method, StringUtils.buildString(mEntrance, "+(", mName, "[", mTitle, "])"), mName + ":" + mTitle); mViewHolder.downloadTv.setVisibility(View.GONE); mViewHolder.downloadPb.setVisibility(View.VISIBLE); mViewHolder.downloadPer.setVisibility(View.VISIBLE); mViewHolder.downloadPb.setProgress(0); mViewHolder.downloadPer.setText("0.0%"); // DownloadManager.getInstance(mViewHolder.context).putStatus(apkEntity.getUrl(), "downloading"); } else { Utils.toast(mViewHolder.context, msg); } } } } }