Merge remote-tracking branch 'origin/2.1' into 2.1
This commit is contained in:
@ -53,7 +53,6 @@ import com.gh.download.DownloadManager;
|
||||
import com.gh.download.DownloadStatus;
|
||||
import com.gh.gamecenter.db.info.ConcernInfo;
|
||||
import com.gh.gamecenter.db.info.GameInfo;
|
||||
import com.gh.gamecenter.db.info.SuspectedGameInfo;
|
||||
import com.gh.gamecenter.entity.ApkEntity;
|
||||
import com.gh.gamecenter.entity.AppEntity;
|
||||
import com.gh.gamecenter.entity.GameDigestEntity;
|
||||
@ -71,7 +70,6 @@ import com.gh.gamecenter.manager.DataCollectionManager;
|
||||
import com.gh.gamecenter.manager.FilterManager;
|
||||
import com.gh.gamecenter.manager.GameManager;
|
||||
import com.gh.gamecenter.manager.PackageManager;
|
||||
import com.gh.gamecenter.manager.SuspectedGameManager;
|
||||
import com.gh.gamecenter.news.NewsFragment;
|
||||
import com.gh.gamecenter.personal.PersonalFragment;
|
||||
import com.gh.gamecenter.volley.extended.JsonArrayExtendedRequest;
|
||||
@ -141,10 +139,17 @@ public class MainActivity extends BaseFragmentActivity implements OnClickListene
|
||||
private DataWatcher dataWatcher = new DataWatcher() {
|
||||
@Override
|
||||
public void onDataChanged(DownloadEntity downloadEntity) {
|
||||
// 链接被劫持
|
||||
if (DownloadStatus.hijack.equals(downloadEntity.getStatus())) {
|
||||
// 链接被劫持
|
||||
processHijack(downloadEntity);
|
||||
return;
|
||||
} else if (DownloadStatus.notfound.equals(downloadEntity.getStatus())) {
|
||||
// 404 Not Found
|
||||
// 删除任务
|
||||
downloadEntity.setStatus(DownloadStatus.cancel);
|
||||
DownloadManager.getInstance(getApplicationContext()).cancel(downloadEntity.getUrl());
|
||||
toast("该链接已失效!请联系管理员。");
|
||||
return;
|
||||
} else if (DownloadStatus.neterror.equals(downloadEntity.getStatus())
|
||||
|| DownloadStatus.timeout.equals(downloadEntity.getStatus())) {
|
||||
toast("网络不稳定,下载任务已暂停");
|
||||
@ -344,9 +349,14 @@ public class MainActivity extends BaseFragmentActivity implements OnClickListene
|
||||
}
|
||||
}
|
||||
if (downloadEntity != null) {
|
||||
String msg = "《" + downloadEntity.getName() + "-"
|
||||
+ PlatformUtils.getInstance(getApplicationContext()).getPlatformName(downloadEntity.getPlatform())
|
||||
+ "》已下载完但还未安装,是否立即安装?";
|
||||
String msg;
|
||||
if (downloadEntity.isPlugin()) {
|
||||
msg = "《" + downloadEntity.getName() + "-"
|
||||
+ PlatformUtils.getInstance(getApplicationContext()).getPlatformName(downloadEntity.getPlatform())
|
||||
+ "》已下载完但还未安装,是否立即安装?";
|
||||
} else {
|
||||
msg = "《" + downloadEntity.getName() + "》已下载完但还未安装,是否立即安装?";
|
||||
}
|
||||
final String path = downloadEntity.getPath();
|
||||
DialogUtils.showWarningDialog(this, "提示", msg, "直接退出", "立即安装",
|
||||
new DialogUtils.ConfiremListener() {
|
||||
@ -556,10 +566,6 @@ public class MainActivity extends BaseFragmentActivity implements OnClickListene
|
||||
}
|
||||
|
||||
private void updateConcern() {
|
||||
// 移除疑似游戏数据库中所有数据
|
||||
SuspectedGameManager suspectedGameManager = new SuspectedGameManager(getApplicationContext());
|
||||
suspectedGameManager.deleteAll();
|
||||
|
||||
ArrayList<String> concernIdList = new ArrayList<>();
|
||||
for (ConcernInfo entity : concernManager.getAllConcern()) {
|
||||
concernIdList.add(entity.getId());
|
||||
@ -716,43 +722,41 @@ public class MainActivity extends BaseFragmentActivity implements OnClickListene
|
||||
}
|
||||
|
||||
private void checkGameUpdate() {
|
||||
ArrayList<String> list = new ArrayList<>();
|
||||
List<ConcernInfo> infos = concernManager.getInstalledGame();
|
||||
for (ConcernInfo info : infos) {
|
||||
for (String packageName : info.getPackageNames().keySet()) {
|
||||
if (info.getPackageNames().get(packageName)
|
||||
&& PackageUtils.getMetaData(this, packageName, "gh_version") != null) {
|
||||
list.add(packageName);
|
||||
checkGameUpdate(packageName);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Object gh_id;
|
||||
for (String packageName : list) {
|
||||
gh_id = PackageUtils.getMetaData(this, packageName, "gh_id");
|
||||
String url;
|
||||
if (gh_id == null) {
|
||||
url = Config.HOST + "update/package/" + packageName;
|
||||
} else {
|
||||
url = Config.HOST + "update/game/" + gh_id + "/package/" + packageName;
|
||||
}
|
||||
JsonObjectExtendedRequest request = new JsonObjectExtendedRequest(url,
|
||||
new Response.Listener<JSONObject>() {
|
||||
@Override
|
||||
public void onResponse(JSONObject response) {
|
||||
if (response.length() != 0) {
|
||||
Gson gson = new Gson();
|
||||
GameUpdateEntity gameUpdateEntity = gson.fromJson(
|
||||
response.toString(), GameUpdateEntity.class);
|
||||
if (PackageUtils.isCanUpdate(MainActivity.this, gameUpdateEntity)) {
|
||||
PackageManager.addUpdate(gameUpdateEntity);
|
||||
EventBus.getDefault().post(new EBDownloadStatus("update"));
|
||||
}
|
||||
private void checkGameUpdate(String packageName) {
|
||||
Object gh_id = PackageUtils.getMetaData(this, packageName, "gh_id");
|
||||
String url;
|
||||
if (gh_id == null) {
|
||||
url = Config.HOST + "update/package/" + packageName;
|
||||
} else {
|
||||
url = Config.HOST + "update/game/" + gh_id + "/package/" + packageName;
|
||||
}
|
||||
JsonObjectExtendedRequest request = new JsonObjectExtendedRequest(url,
|
||||
new Response.Listener<JSONObject>() {
|
||||
@Override
|
||||
public void onResponse(JSONObject response) {
|
||||
if (response.length() != 0) {
|
||||
Gson gson = new Gson();
|
||||
GameUpdateEntity gameUpdateEntity = gson.fromJson(
|
||||
response.toString(), GameUpdateEntity.class);
|
||||
if (PackageUtils.isCanUpdate(MainActivity.this, gameUpdateEntity)) {
|
||||
PackageManager.addUpdate(gameUpdateEntity);
|
||||
EventBus.getDefault().post(new EBDownloadStatus("update"));
|
||||
}
|
||||
}
|
||||
}, null);
|
||||
AppController.addToRequestQueue(request, TAG);
|
||||
}
|
||||
}
|
||||
}, null);
|
||||
AppController.addToRequestQueue(request, TAG);
|
||||
}
|
||||
|
||||
private int count;
|
||||
@ -810,25 +814,12 @@ public class MainActivity extends BaseFragmentActivity implements OnClickListene
|
||||
&& gameEntity.getApk() != null) {
|
||||
map = info.getPackageNames();
|
||||
for (String key : map.keySet()) {
|
||||
if (map.get(key) && !PackageUtils.isSignature(this, key)) {
|
||||
if (map.get(key)) {
|
||||
for (ApkEntity apkEntity : gameEntity.getApk()) {
|
||||
if (apkEntity.getPackageName().equals(key)) {
|
||||
GameUpdateEntity gameUpdateEntity = new GameUpdateEntity();
|
||||
gameUpdateEntity.setId(gameEntity.getId());
|
||||
gameUpdateEntity.setIcon(gameEntity.getIcon());
|
||||
gameUpdateEntity.setName(gameEntity.getName());
|
||||
gameUpdateEntity.setPackageName(apkEntity.getPackageName());
|
||||
gameUpdateEntity.setSize(apkEntity.getSize());
|
||||
gameUpdateEntity.setVersion(apkEntity.getVersion());
|
||||
gameUpdateEntity.setGhVersion(apkEntity.getGhVersion());
|
||||
gameUpdateEntity.setUrl(apkEntity.getUrl());
|
||||
gameUpdateEntity.setPlatform(apkEntity.getPlatform());
|
||||
gameUpdateEntity.setEtag(apkEntity.getEtag());
|
||||
gameUpdateEntity.setPluggable(true);
|
||||
gameUpdateEntity.setTag(gameEntity.getTag());
|
||||
gameUpdateEntity.setBrief(gameEntity.getBrief());
|
||||
|
||||
PackageManager.addUpdate(gameUpdateEntity);
|
||||
if (apkEntity.getPackageName().equals(key)
|
||||
&& !TextUtils.isEmpty(apkEntity.getGhVersion())
|
||||
&& !PackageUtils.isSignature(this, apkEntity.getPackageName())) {
|
||||
PackageManager.addUpdate(getGameUpdateEntity(gameEntity, apkEntity));
|
||||
break;
|
||||
}
|
||||
}
|
||||
@ -843,6 +834,24 @@ public class MainActivity extends BaseFragmentActivity implements OnClickListene
|
||||
EventBus.getDefault().post(new EBDownloadStatus("plugin"));
|
||||
}
|
||||
|
||||
private GameUpdateEntity getGameUpdateEntity(GameEntity gameEntity, ApkEntity apkEntity) {
|
||||
GameUpdateEntity gameUpdateEntity = new GameUpdateEntity();
|
||||
gameUpdateEntity.setId(gameEntity.getId());
|
||||
gameUpdateEntity.setIcon(gameEntity.getIcon());
|
||||
gameUpdateEntity.setName(gameEntity.getName());
|
||||
gameUpdateEntity.setPackageName(apkEntity.getPackageName());
|
||||
gameUpdateEntity.setSize(apkEntity.getSize());
|
||||
gameUpdateEntity.setVersion(apkEntity.getVersion());
|
||||
gameUpdateEntity.setGhVersion(apkEntity.getGhVersion());
|
||||
gameUpdateEntity.setUrl(apkEntity.getUrl());
|
||||
gameUpdateEntity.setPlatform(apkEntity.getPlatform());
|
||||
gameUpdateEntity.setEtag(apkEntity.getEtag());
|
||||
gameUpdateEntity.setPluggable(true);
|
||||
gameUpdateEntity.setTag(gameEntity.getTag());
|
||||
gameUpdateEntity.setBrief(gameEntity.getBrief());
|
||||
return gameUpdateEntity;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onWindowFocusChanged(boolean hasFocus) {
|
||||
super.onWindowFocusChanged(hasFocus);
|
||||
@ -1401,7 +1410,6 @@ public class MainActivity extends BaseFragmentActivity implements OnClickListene
|
||||
DownloadManager.getInstance(getApplicationContext()).cancel(
|
||||
mDownloadEntity.getUrl(), sp.getBoolean("autodelete", true));
|
||||
}
|
||||
|
||||
} else if ("卸载".equals(busFour.getType())) {
|
||||
Map<String, Object> kv6 = new HashMap<>();
|
||||
kv6.put("安装或卸载", "卸载完成");
|
||||
@ -1412,45 +1420,19 @@ public class MainActivity extends BaseFragmentActivity implements OnClickListene
|
||||
}
|
||||
if ("安装".equals(busFour.getType())) {
|
||||
GameManager gameManager = new GameManager(getApplicationContext());
|
||||
GameInfo gameEntity = gameManager.findGame(packageName);
|
||||
if (gameEntity != null) {
|
||||
concernManager.updateByEntity(gameEntity);
|
||||
} else {
|
||||
FilterManager filterManager = new FilterManager(getApplicationContext());
|
||||
if (!filterManager.isFilter(packageName)) {
|
||||
SuspectedGameManager suspectedGameManager = new SuspectedGameManager(getApplicationContext());
|
||||
suspectedGameManager.addGame(new SuspectedGameInfo(
|
||||
packageName, System.currentTimeMillis()));
|
||||
}
|
||||
GameInfo gameInfo = gameManager.findGame(packageName);
|
||||
if (gameInfo != null) {
|
||||
concernManager.updateByEntity(gameInfo);
|
||||
}
|
||||
} else if ("卸载".equals(busFour.getType())) {
|
||||
FilterManager filterManager = new FilterManager(getApplicationContext());
|
||||
if (!filterManager.isFilter(packageName)) {
|
||||
SuspectedGameManager suspectedGameManager = new SuspectedGameManager(getApplicationContext());
|
||||
suspectedGameManager.deleteSuspectedGame(packageName);
|
||||
|
||||
concernManager.updateByPackageName(packageName);
|
||||
}
|
||||
}
|
||||
if ("卸载".equals(busFour.getType())) {
|
||||
ArrayList<GameUpdateEntity> list = PackageManager.getUpdateList();
|
||||
GameUpdateEntity game;
|
||||
int index = -1;
|
||||
for (int i = 0, size = list.size(); i < size; i++) {
|
||||
game = list.get(i);
|
||||
if (!game.isPluggable()) {
|
||||
continue;
|
||||
}
|
||||
if (game.getPackageName().equals(packageName)) {
|
||||
index = i;
|
||||
break;
|
||||
}
|
||||
}
|
||||
if (index != -1) {
|
||||
PackageManager.removeUpdate(packageName);
|
||||
}
|
||||
if ("卸载".equals(busFour.getType()) || "安装".equals(busFour.getType())) {
|
||||
PackageManager.removeUpdate(packageName);
|
||||
}
|
||||
|
||||
if ("安装".equals(busFour.getType())) {
|
||||
// 安装后关注游戏
|
||||
JsonArrayExtendedRequest request = new JsonArrayExtendedRequest(
|
||||
@ -1468,7 +1450,11 @@ public class MainActivity extends BaseFragmentActivity implements OnClickListene
|
||||
gameInfo.setPackageName(packageName);
|
||||
gameInfo.setGameName(gameDigestEntity.getName());
|
||||
concernManager.updateByEntity(gameInfo);
|
||||
concernGame(gameDigestEntity.getId());
|
||||
concernGame(gameDigestEntity.getId(), packageName);
|
||||
if (PackageUtils.getMetaData(getApplicationContext(),
|
||||
packageName, "gh_version") != null) {
|
||||
checkGameUpdate(packageName);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -1482,20 +1468,35 @@ public class MainActivity extends BaseFragmentActivity implements OnClickListene
|
||||
DataCollectionManager.onEvent(this, "inorunstall", map);
|
||||
}
|
||||
|
||||
private void concernGame(String id) {
|
||||
if (!concernManager.isConcern(id)) {
|
||||
JsonObjectExtendedRequest request = new JsonObjectExtendedRequest(
|
||||
Config.HOST + "game/" + id + "/digest",
|
||||
new Response.Listener<JSONObject>() {
|
||||
@Override
|
||||
public void onResponse(JSONObject response) {
|
||||
Gson gson = new Gson();
|
||||
GameEntity gameEntity = gson.fromJson(response.toString(), GameEntity.class);
|
||||
private void concernGame(final String id, final String packageName) {
|
||||
JsonObjectExtendedRequest request = new JsonObjectExtendedRequest(
|
||||
Config.HOST + "game/" + id + "/digest",
|
||||
new Response.Listener<JSONObject>() {
|
||||
@Override
|
||||
public void onResponse(JSONObject response) {
|
||||
Gson gson = new Gson();
|
||||
GameEntity gameEntity = gson.fromJson(response.toString(), GameEntity.class);
|
||||
GameManager manager = new GameManager(getApplicationContext());
|
||||
manager.addOrUpdate(gameEntity.getApk(), gameEntity.getId(), gameEntity.getName());
|
||||
if (!concernManager.isConcern(id)) {
|
||||
concernManager.addByEntity(gameEntity);
|
||||
}
|
||||
}, null);
|
||||
AppController.addToRequestQueue(request, TAG);
|
||||
}
|
||||
// 检查是否能插件化
|
||||
if (gameEntity.getTag() != null && gameEntity.getTag().size() != 0
|
||||
&& gameEntity.getApk() != null) {
|
||||
for (ApkEntity apkEntity : gameEntity.getApk()) {
|
||||
if (apkEntity.getPackageName().equals(packageName)
|
||||
&& !TextUtils.isEmpty(apkEntity.getGhVersion())
|
||||
&& !PackageUtils.isSignature(getApplicationContext(), apkEntity.getPackageName())) {
|
||||
PackageManager.addUpdate(getGameUpdateEntity(gameEntity, apkEntity));
|
||||
EventBus.getDefault().post(new EBDownloadStatus("plugin"));
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}, null);
|
||||
AppController.addToRequestQueue(request, TAG);
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
Reference in New Issue
Block a user