261 lines
13 KiB
Java
261 lines
13 KiB
Java
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.DataUtils;
|
|
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) {
|
|
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 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();
|
|
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);
|
|
}
|
|
}
|
|
}
|
|
}
|