diff --git a/app/src/main/java/com/gh/base/DetailActivity.java b/app/src/main/java/com/gh/base/DetailActivity.java index 5a5db4a13a..776a492e93 100644 --- a/app/src/main/java/com/gh/base/DetailActivity.java +++ b/app/src/main/java/com/gh/base/DetailActivity.java @@ -349,7 +349,8 @@ public abstract class DetailActivity extends BaseActivity implements View.OnClic } private void download() { - if (detail_tv_download.getText().toString().contains("启动")) { + String str = detail_tv_download.getText().toString(); + if (str.contains("启动")) { Map kv = new HashMap<>(); kv.put("版本", gameEntity.getApk().get(0).getPlatform()); kv.put("页面", name); @@ -358,6 +359,14 @@ public abstract class DetailActivity extends BaseActivity implements View.OnClic PackageUtils.launchApplicationByPackageName(getApplicationContext(), gameEntity.getApk().get(0).getPackageName()); } else { + String method; + if (str.contains("更新")) { + method = "更新"; + } else if (str.contains("插件化")) { + method = "插件化"; + } else { + method = "下载"; + } ApkEntity apkEntity = gameEntity.getApk().get(0); String msg = FileUtils.isCanDownload(apkEntity.getSize()); if (TextUtils.isEmpty(msg)) { @@ -381,12 +390,13 @@ public abstract class DetailActivity extends BaseActivity implements View.OnClic Map map = new HashMap<>(); map.put("game", gameEntity.getName()); map.put("game_id", gameEntity.getId()); - map.put("method", "正常"); + map.put("method", method.equals("下载") ? "正常" : method); map.put("platform", PlatformUtils.getInstance(getApplicationContext()) .getPlatformName(gameEntity.getApk().get(0).getPlatform())); map.put("status", "开始"); map.put("location", name + ":" + title); - map.put("from", entrance); + map.put("entrance", entrance); + map.put("btn_status", method); map.put("network", NetworkUtils.getConnectedType(this)); DataCollectionManager.onEvent(this, "download", map); 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 958513c810..b9822cc1c9 100644 --- a/app/src/main/java/com/gh/common/util/DownloadItemUtils.java +++ b/app/src/main/java/com/gh/common/util/DownloadItemUtils.java @@ -376,30 +376,31 @@ public class DownloadItemUtils { final GameEntity entity, final int position, final RecyclerView.Adapter adapter, - final String entrance) { + final String entrance, + final String location) { downloadBtn.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { String str = downloadBtn.getText().toString(); if ("下载".equals(str)) { if (NetworkUtils.isWifiConnected(context)) { - download(context, entity, downloadBtn, entrance); + download(context, entity, downloadBtn, entrance, location); } else { DialogUtils.showDownloadDialog(context, new DialogUtils.ConfiremListener() { @Override public void onConfirem() { - download(context, entity, downloadBtn, entrance); + download(context, entity, downloadBtn, entrance, location); } }); } } else if ("插件化".equals(str)) { if (NetworkUtils.isWifiConnected(context)) { - plugin(context, entity, downloadBtn, entrance); + plugin(context, entity, downloadBtn, entrance, location); } else { DialogUtils.showDownloadDialog(context, new DialogUtils.ConfiremListener() { @Override public void onConfirem() { - plugin(context, entity, downloadBtn, entrance); + plugin(context, entity, downloadBtn, entrance, location); } }); } @@ -415,12 +416,12 @@ public class DownloadItemUtils { context.startActivity(new Intent(context, DownloadManagerActivity.class)); } else if ("更新".equals(str)) { if (NetworkUtils.isWifiConnected(context)) { - update(context, entity); + update(context, entity, entrance, location); } else { DialogUtils.showDownloadDialog(context, new DialogUtils.ConfiremListener() { @Override public void onConfirem() { - update(context, entity); + update(context, entity, entrance, location); } }); } @@ -456,7 +457,7 @@ public class DownloadItemUtils { String location) { if (entity.getApk().size() == 1) { - setNormalOnClickListener(context, downloadBtn, entity, position, adapter, entrance); + setNormalOnClickListener(context, downloadBtn, entity, position, adapter, entrance, location); } else { setPluginOnClickListener(context, downloadBtn, download_speed, download_percentage, entity, entrance, location); @@ -465,7 +466,7 @@ public class DownloadItemUtils { } //更新 - private static void update(Context context, GameEntity gameEntity) { + private static void update(Context context, GameEntity gameEntity, String entrance, String location) { ApkEntity apkEntity = gameEntity.getApk().get(0); //下载可更新游戏 Map kv = new HashMap<>(); @@ -473,6 +474,19 @@ public class DownloadItemUtils { kv.put("状态", "下载开始"); DataUtils.onEvent(context, "游戏更新", gameEntity.getName(), kv); + Map map = new HashMap<>(); + map.put("game", gameEntity.getName()); + map.put("game_id", gameEntity.getId()); + map.put("method", "更新"); + map.put("platform", PlatformUtils.getInstance(context) + .getPlatformName(gameEntity.getApk().get(0).getPlatform())); + map.put("status", "开始"); + map.put("location", location); + map.put("entrance", entrance); + map.put("btn_status", "更新"); + map.put("network", NetworkUtils.getConnectedType(context)); + DataCollectionManager.onEvent(context, "download", map); + DownloadEntity downloadEntity = new DownloadEntity(); downloadEntity.setUrl(apkEntity.getUrl()); downloadEntity.setName(gameEntity.getName()); @@ -484,6 +498,8 @@ public class DownloadItemUtils { downloadEntity.setIcon(gameEntity.getIcon()); downloadEntity.setUpdate(true); downloadEntity.setETag(apkEntity.getEtag()); + downloadEntity.setLocation(location); + downloadEntity.setEntrance(entrance); DownloadManager.getInstance(context).add(downloadEntity); } @@ -491,7 +507,8 @@ public class DownloadItemUtils { private static void download(Context context, GameEntity entity, TextView downloadBtn, - String entrance) { + String entrance, + String location) { String msg = FileUtils.isCanDownload(entity.getApk().get(0).getSize()); if (TextUtils.isEmpty(msg)) { Map kv = new HashMap<>(); @@ -510,20 +527,6 @@ public class DownloadItemUtils { kv3.put(entrance, "下载开始"); DataUtils.onEvent(context, "应用数据", entity.getName(), kv3); - if ("主页-最新插件".equals(entrance)) { - Map kv4 = new HashMap<>(); - kv4.put(entity.getName(), "下载数"); - DataUtils.onEvent(context, "主页数据", "最新插件", kv4); - } else if ("主页-热门卡牌".equals(entrance)) { - Map kv4 = new HashMap<>(); - kv4.put(entity.getName(), "下载数"); - DataUtils.onEvent(context, "主页数据", "热门卡牌", kv4); - } else if ("主页-新测卡牌".equals(entrance)) { - Map kv4 = new HashMap<>(); - kv4.put(entity.getName(), "下载数"); - DataUtils.onEvent(context, "主页数据", "新测卡牌", kv4); - } - Map map = new HashMap<>(); map.put("game", entity.getName()); map.put("game_id", entity.getId()); @@ -531,12 +534,13 @@ public class DownloadItemUtils { map.put("platform", PlatformUtils.getInstance(context) .getPlatformName(entity.getApk().get(0).getPlatform())); map.put("status", "开始"); - map.put("location", "游戏详情:" + entity.getName()); - map.put("from", entrance); + map.put("location", location); + map.put("entrance", entrance); + map.put("btn_status", "下载"); map.put("network", NetworkUtils.getConnectedType(context)); DataCollectionManager.onEvent(context, "download", map); - addDownloadEntry(context, entity, 0, entrance); + addDownloadEntry(context, entity, 0, entrance, location); Toast.makeText(context, entity.getName() + "已加入下载队列", Toast.LENGTH_SHORT).show(); downloadBtn.setText("下载中"); @@ -553,7 +557,8 @@ public class DownloadItemUtils { private static void plugin(Context context, GameEntity entity, TextView downloadBtn, - String entrance) { + String entrance, + String location) { String msg = FileUtils.isCanDownload(entity.getApk().get(0).getSize()); if (TextUtils.isEmpty(msg)) { Map kv = new HashMap<>(); @@ -572,33 +577,20 @@ public class DownloadItemUtils { kv3.put(entrance, "下载开始"); DataUtils.onEvent(context, "应用数据", entity.getName(), kv3); - if ("主页-最新插件".equals(entrance)) { - Map kv4 = new HashMap<>(); - kv4.put(entity.getName(), "下载数"); - DataUtils.onEvent(context, "主页数据", "最新插件", kv4); - } else if ("主页-热门卡牌".equals(entrance)) { - Map kv4 = new HashMap<>(); - kv4.put(entity.getName(), "下载数"); - DataUtils.onEvent(context, "主页数据", "热门卡牌", kv4); - } else if ("主页-新测卡牌".equals(entrance)) { - Map kv4 = new HashMap<>(); - kv4.put(entity.getName(), "下载数"); - DataUtils.onEvent(context, "主页数据", "新测卡牌", kv4); - } - Map map = new HashMap<>(); map.put("game", entity.getName()); map.put("game_id", entity.getId()); - map.put("method", "正常"); + map.put("method", "插件化"); map.put("platform", PlatformUtils.getInstance(context) .getPlatformName(entity.getApk().get(0).getPlatform())); map.put("status", "开始"); - map.put("location", "游戏详情:" + entity.getName()); - map.put("from", entrance); + map.put("location", location); + map.put("entrance", entrance); + map.put("btn_status", "插件化"); map.put("network", NetworkUtils.getConnectedType(context)); DataCollectionManager.onEvent(context, "download", map); - addDownloadEntry(context, entity, 0, entrance); + addDownloadEntry(context, entity, 0, entrance, location); Toast.makeText(context, entity.getName() + "已加入下载队列", Toast.LENGTH_SHORT).show(); downloadBtn.setText("下载中"); @@ -643,7 +635,8 @@ public class DownloadItemUtils { private static void addDownloadEntry(Context context, GameEntity gameEntity, int position, - String entrance) { + String entrance, + String location) { ApkEntity apkEntity = gameEntity.getApk().get(position); @@ -659,7 +652,7 @@ public class DownloadItemUtils { downloadEntity.setGameId(gameEntity.getId()); downloadEntity.setPluggable(gameEntity.isPluggable()); downloadEntity.setEntrance(entrance); - downloadEntity.setLocation("游戏详情:" + gameEntity.getName()); + downloadEntity.setLocation(location); DownloadManager.getInstance(context).add(downloadEntity); } diff --git a/app/src/main/java/com/gh/common/util/FileUtils.java b/app/src/main/java/com/gh/common/util/FileUtils.java index 1c3e4a2dbe..35a7c8eaae 100644 --- a/app/src/main/java/com/gh/common/util/FileUtils.java +++ b/app/src/main/java/com/gh/common/util/FileUtils.java @@ -204,7 +204,7 @@ public class FileUtils { } // 上传文件 - public static String uploadFile(String url, String filePath, String token) { + public static JSONObject uploadFile(String url, String filePath, String token) { String end = "\r\n"; String twoHyphens = "--"; String boundary = UUID.randomUUID().toString().replaceAll("-", "") @@ -280,10 +280,15 @@ public class FileUtils { // 显示网页响应内容 Utils.log("content = " + b.toString().trim()); - // {"icon":"http:\/\/api.ghzhushou.com\/temp\/5688e548d7859e6f278b4567.jpg"} + // {"icon":"http:\/\/gh-test-1.oss-cn-qingdao.aliyuncs.com\/pic\/57e4f4d58a3200042d29492f.jpg"} if (connection.getResponseCode() == HttpStatus.SC_OK) { JSONObject response = new JSONObject(b.toString().trim()); - return response.getString("icon"); + response.put("statusCode", HttpStatus.SC_OK); + return response; + } else if (connection.getResponseCode() == HttpStatus.SC_FORBIDDEN) { + JSONObject response = new JSONObject(b.toString().trim()); + response.put("statusCode", HttpStatus.SC_FORBIDDEN); + return response; } } catch (Exception e) { // 显示异常信息 diff --git a/app/src/main/java/com/gh/common/view/CropImageCustom.java b/app/src/main/java/com/gh/common/view/CropImageCustom.java index 5d04ee37d9..11e225e747 100644 --- a/app/src/main/java/com/gh/common/view/CropImageCustom.java +++ b/app/src/main/java/com/gh/common/view/CropImageCustom.java @@ -7,6 +7,8 @@ import android.util.TypedValue; import android.widget.ImageView; import android.widget.RelativeLayout; +import com.gh.common.util.Utils; + import java.io.BufferedOutputStream; import java.io.File; import java.io.FileOutputStream; @@ -58,19 +60,25 @@ public class CropImageCustom extends RelativeLayout { return mZoomImageView.clip(); } - public void savePicture(String path) { + public boolean savePicture(String path) { Bitmap bitmap = mZoomImageView.clip(); File file = new File(path); - try { - BufferedOutputStream bos = new BufferedOutputStream( - new FileOutputStream(file)); - bitmap.compress(Bitmap.CompressFormat.JPEG, 80, bos); - bos.flush(); - bos.close(); - } catch (IOException e) { - file.delete(); - e.printStackTrace(); - } + int quality = 80; + do { + try { + BufferedOutputStream bos = new BufferedOutputStream( + new FileOutputStream(file)); + bitmap.compress(Bitmap.CompressFormat.JPEG, quality, bos); + bos.flush(); + bos.close(); + } catch (IOException e) { + file.delete(); + e.printStackTrace(); + return false; + } + quality -= 10; + } while (file.length() > 81920); + return true; } public ImageView getCropImageZoomView() { diff --git a/app/src/main/java/com/gh/common/view/DownloadDialog.java b/app/src/main/java/com/gh/common/view/DownloadDialog.java index 02f58cbde3..becede5e2b 100644 --- a/app/src/main/java/com/gh/common/view/DownloadDialog.java +++ b/app/src/main/java/com/gh/common/view/DownloadDialog.java @@ -989,6 +989,19 @@ public class DownloadDialog { kv.put("状态", "下载开始"); DataUtils.onEvent(context, "游戏更新", gameName, kv); + Map map = new HashMap<>(); + map.put("game", gameName); + map.put("game_id", gameId); + map.put("method", "更新"); + map.put("platform", PlatformUtils.getInstance(context) + .getPlatformName(apkEntity.getPlatform())); + map.put("status", "开始"); + map.put("location", mlocation); + map.put("entrance", entrance); + map.put("btn_status", "更新"); + map.put("network", NetworkUtils.getConnectedType(context)); + DataCollectionManager.onEvent(context, "download", map); + DownloadEntity downloadEntity = new DownloadEntity(); downloadEntity.setUrl(apkEntity.getUrl()); downloadEntity.setName(gameName); @@ -1000,6 +1013,8 @@ public class DownloadDialog { downloadEntity.setPlatform(apkEntity.getPlatform()); downloadEntity.setPackageName(apkEntity.getPackageName()); downloadEntity.setUpdate(true); + downloadEntity.setEntrance(entrance); + downloadEntity.setLocation(mlocation); DownloadManager.getInstance(context).add(downloadEntity); } @@ -1057,7 +1072,8 @@ public class DownloadDialog { .getPlatformName(apkEntity.getPlatform())); map.put("status", "开始"); map.put("location", mlocation); - map.put("from", entrance); + map.put("entrance", entrance); + map.put("btn_status", "插件化"); map.put("network", NetworkUtils.getConnectedType(context)); DataCollectionManager.onEvent(context, "download", map); @@ -1146,7 +1162,8 @@ public class DownloadDialog { .getPlatformName(apkEntity.getPlatform())); map.put("status", "开始"); map.put("location", mlocation); - map.put("from", entrance); + map.put("entrance", entrance); + map.put("btn_status", "下载"); map.put("network", NetworkUtils.getConnectedType(context)); DataCollectionManager.onEvent(context, "download", map); @@ -1160,10 +1177,8 @@ public class DownloadDialog { downloadEntity.setPlatform(apkEntity.getPlatform()); downloadEntity.setPackageName(apkEntity.getPackageName()); downloadEntity.setGameId(gameId); - HashMap meta = new HashMap<>(); - meta.put("entrance", entrance); - meta.put("location", mlocation); - downloadEntity.setMeta(meta); + downloadEntity.setEntrance(entrance); + downloadEntity.setLocation(mlocation); DownloadManager.getInstance(context).add(downloadEntity); diff --git a/app/src/main/java/com/gh/download/DataChanger.java b/app/src/main/java/com/gh/download/DataChanger.java index 25968b9684..d8e949856b 100644 --- a/app/src/main/java/com/gh/download/DataChanger.java +++ b/app/src/main/java/com/gh/download/DataChanger.java @@ -17,8 +17,8 @@ public class DataChanger extends Observable { return mInstance; } - private Map mDownloadingTasks;//当前正在下载的任务队列 - private Map mDownloadEntries;//包含所有下载任务的任务队列 + private final Map mDownloadingTasks;//当前正在下载的任务队列 + private final Map mDownloadEntries;//包含所有下载任务的任务队列 private DataChanger() { mDownloadingTasks = Collections.synchronizedMap(new HashMap()); @@ -26,58 +26,32 @@ public class DataChanger extends Observable { } public Map getDownloadingTasks() { - return mDownloadingTasks; + synchronized (mDownloadingTasks) { + return mDownloadingTasks; + } } public Map getDownloadEntries() { - return mDownloadEntries; - } - - public void addToDownloadEntries(DownloadEntity entry) { - mDownloadEntries.put(entry.getUrl(), entry); - } - - public int getDownloadingSize() { - return mDownloadingTasks.size(); + synchronized (mDownloadEntries) { + return mDownloadEntries; + } } public synchronized void notifyDataChanged(DownloadEntity entry) { - if(entry != null){ - if (mDownloadEntries.get(entry.getUrl()) != null) { - mDownloadEntries.put(entry.getUrl(), entry); + if (entry != null) { + if (getDownloadEntries().get(entry.getUrl()) != null) { + getDownloadEntries().put(entry.getUrl(), entry); setChanged(); notifyObservers(entry); } } } - public void addToDownloadingTask(String url, DownloadTask task) { - mDownloadingTasks.put(url, task); - } - - public void removeDownloadingTask(String url) { - getDownloadingTasks().remove(url); - } - - public void removeDownloadEntry(String url) { - getDownloadEntries().remove(url); - } - - public void pauseDownloadingTasks(String url) { - DownloadTask downloadTask = getDownloadingTasks().get(url); - if(downloadTask != null){ + public synchronized void pauseDownloadingTasks(String url) { + DownloadTask downloadTask = getDownloadingTasks().remove(url); + if (downloadTask != null) { downloadTask.pause(); - removeDownloadingTask(url); } - pauseDownloadEntries(url); } - public void pauseDownloadEntries(String url) { - DownloadEntity entry = getDownloadEntries().get(url); - if(entry != null){ - entry.setStatus(DownloadStatus.pause); - } - } - - } diff --git a/app/src/main/java/com/gh/download/DownloadManager.java b/app/src/main/java/com/gh/download/DownloadManager.java index a8ab8fcd0a..ea13f153e4 100644 --- a/app/src/main/java/com/gh/download/DownloadManager.java +++ b/app/src/main/java/com/gh/download/DownloadManager.java @@ -12,7 +12,9 @@ import com.gh.common.util.FileUtils; import com.gh.common.util.Utils; import java.io.File; +import java.util.ArrayList; import java.util.List; +import java.util.Map; import java.util.Map.Entry; import java.util.concurrent.LinkedBlockingQueue; @@ -249,7 +251,6 @@ public class DownloadManager { DownloadDao.getInstance(context).delete(url); Utils.log(DownloadManager.class.getSimpleName(), "cancle==>file and record were deleted!"); } -// DownloadEntity entry = DataChanger.getInstance().getDownloadEntries().get(url); if (entry != null) { context.startService(getIntent(entry, DownloadStatus.cancel)); Utils.log(DownloadManager.class.getSimpleName(), "cancel"); @@ -310,6 +311,25 @@ public class DownloadManager { return DownloadDao.getInstance(context).getAll(); } + /** + * 检查数据库中当前是下载状态,但并未在下载进程中的下载数据 + */ + public void checkAll() { + List urlList = new ArrayList<>(); + for (Entry entry : DataChanger.getInstance() + .getDownloadingTasks().entrySet()) { + urlList.add(entry.getValue().getEntry().getUrl()); + } + for (DownloadEntity downloadEntity : getAll()) { + if (!urlList.contains(downloadEntity.getUrl()) + && downloadEntity.getStatus().equals(DownloadStatus.downloading)) { + downloadEntity.setStatus(DownloadStatus.pause); + DownloadDao.getInstance(context).newOrUpdate(downloadEntity); + DataChanger.getInstance().notifyDataChanged(downloadEntity); + } + } + } + public void addObserver(DataWatcher dataWatcher) { DataChanger.getInstance().addObserver(dataWatcher); Utils.log(DownloadManager.class.getSimpleName(), "addObserver"); diff --git a/app/src/main/java/com/gh/download/DownloadService.java b/app/src/main/java/com/gh/download/DownloadService.java index fcf70fabfb..ef946297f6 100644 --- a/app/src/main/java/com/gh/download/DownloadService.java +++ b/app/src/main/java/com/gh/download/DownloadService.java @@ -64,10 +64,10 @@ public class DownloadService extends Service { entry = downloadEntity; } - if (DataChanger.getInstance().getDownloadingSize() >= Constants.MAX_DOWNLOADING_SIZE) { + if (DataChanger.getInstance().getDownloadingTasks().size() >= Constants.MAX_DOWNLOADING_SIZE) { // 1.改任务队列的状态 entry.setStatus(DownloadStatus.waiting); - DataChanger.getInstance().addToDownloadEntries(entry); + DataChanger.getInstance().getDownloadEntries().put(entry.getUrl(), entry); // 2.改数据库状态 DownloadDao.getInstance(this).newOrUpdate(entry); // 3.通知更新 @@ -82,10 +82,10 @@ public class DownloadService extends Service { private synchronized void startDownload(DownloadEntity entry) { // 1.改任务队列的状态 entry.setStatus(DownloadStatus.downloading); - DataChanger.getInstance().addToDownloadEntries(entry); + DataChanger.getInstance().getDownloadEntries().put(entry.getUrl(), entry); DownloadTask task = new DownloadTask(handler, entry, this); task.start(); - DataChanger.getInstance().addToDownloadingTask(entry.getUrl(), task); + DataChanger.getInstance().getDownloadingTasks().put(entry.getUrl(), task); // 2.改数据库状态 DownloadDao.getInstance(this).newOrUpdate(entry); // 3.通知更新 @@ -123,11 +123,11 @@ public class DownloadService extends Service { if (task != null) { task.cancel(); // 改任务队列的状态 - DataChanger.getInstance().removeDownloadingTask(downloadEntity.getUrl()); + DataChanger.getInstance().getDownloadingTasks().remove(downloadEntity.getUrl()); DataChanger.getInstance().notifyDataChanged(downloadEntity); } if (downloadEntity != null) { - DataChanger.getInstance().removeDownloadEntry(downloadEntity.getUrl()); + DataChanger.getInstance().getDownloadEntries().remove(downloadEntity.getUrl()); DataChanger.getInstance().notifyDataChanged(downloadEntity); } Utils.log(DownloadService.class.getSimpleName(), "cancelDownload==>" + downloadEntity); @@ -164,9 +164,9 @@ public class DownloadService extends Service { } }; - private synchronized void removeAndCheckNext(DownloadEntity obj) { - DataChanger.getInstance().removeDownloadingTask(obj.getUrl()); - DataChanger.getInstance().removeDownloadEntry(obj.getUrl()); + private synchronized void removeAndCheckNext(DownloadEntity downloadEntity) { + DataChanger.getInstance().getDownloadingTasks().remove(downloadEntity.getUrl()); + DataChanger.getInstance().getDownloadEntries().remove(downloadEntity.getUrl()); for (Entry entry : DataChanger.getInstance() .getDownloadEntries().entrySet()) { if (entry.getValue().getStatus() == DownloadStatus.waiting) { @@ -174,7 +174,7 @@ public class DownloadService extends Service { return; } } - Utils.log(DownloadService.class.getSimpleName(), "removeAndCheckNext==>" + obj); + Utils.log(DownloadService.class.getSimpleName(), "removeAndCheckNext==>" + downloadEntity); } } diff --git a/app/src/main/java/com/gh/download/DownloadTask.java b/app/src/main/java/com/gh/download/DownloadTask.java index 80416b4bf2..232b242e5e 100644 --- a/app/src/main/java/com/gh/download/DownloadTask.java +++ b/app/src/main/java/com/gh/download/DownloadTask.java @@ -139,22 +139,17 @@ public class DownloadTask implements DownloadListener { /*********************** 处理网络异常 ***********************/ if (status == DownloadStatus.timeout || status == DownloadStatus.neterror) { - Map map = DataChanger.getInstance().getDownloadingTasks(); - Iterator iterator = map.keySet().iterator(); + Map taskMap = DataChanger.getInstance().getDownloadingTasks(); + Iterator iterator = taskMap.keySet().iterator(); String key; while (iterator.hasNext()) { key = iterator.next(); - DownloadTask task = map.get(key); + DownloadTask task = taskMap.get(key); if (task != null) { task.pause(); } iterator.remove(); } - for (Entry entry : DataChanger.getInstance() - .getDownloadEntries().entrySet()) { - DataChanger.getInstance().pauseDownloadEntries(entry.getKey()); - DownloadDao.getInstance(context).newOrUpdate(entry.getValue()); - } } entry.setStatus(status); @@ -174,4 +169,7 @@ public class DownloadTask implements DownloadListener { downloadThread.setStatus(DownloadStatus.pause); } + public DownloadEntity getEntry() { + return entry; + } } diff --git a/app/src/main/java/com/gh/gamecenter/CropImageActivity.java b/app/src/main/java/com/gh/gamecenter/CropImageActivity.java index f9e80da93c..2115a07d99 100644 --- a/app/src/main/java/com/gh/gamecenter/CropImageActivity.java +++ b/app/src/main/java/com/gh/gamecenter/CropImageActivity.java @@ -19,6 +19,10 @@ import com.gh.common.util.ImageUtils; import com.gh.common.util.TokenUtils; import com.gh.common.view.CropImageCustom; +import org.apache.http.HttpStatus; +import org.json.JSONException; +import org.json.JSONObject; + import java.io.File; public class CropImageActivity extends BaseActivity { @@ -32,6 +36,8 @@ public class CropImageActivity extends BaseActivity { toast("上传成功"); } else if (msg.what == 1) { toast("上传失败"); + } else if (msg.what == 2) { + toast("修改太频繁,请稍后再试"); } } }; @@ -62,18 +68,32 @@ public class CropImageActivity extends BaseActivity { public void run() { String path = getCacheDir() + File.separator + System.currentTimeMillis() + ".jpg"; - cropimage_custom.savePicture(path); - // 上传图片 - String url = FileUtils.uploadFile("http://user.ghzhushou.com/v1d0/icon", - path, TokenUtils.getToken(CropImageActivity.this)); - dialog.dismiss(); - if (url != null) { - Intent data = new Intent(); - data.putExtra("url", url); - setResult(RESULT_OK, data); - finish(); - handler.sendEmptyMessage(0); + if (cropimage_custom.savePicture(path)) { + // 上传图片 + JSONObject result = FileUtils.uploadFile("http://user.ghzhushou.com/v1d0/icon", + path, TokenUtils.getToken(CropImageActivity.this)); + dialog.dismiss(); + if (result != null) { + try { + int statusCode = result.getInt("statusCode"); + if (statusCode == HttpStatus.SC_OK) { + Intent data = new Intent(); + data.putExtra("url", result.getString("icon")); + setResult(RESULT_OK, data); + finish(); + handler.sendEmptyMessage(0); + } else if (statusCode == HttpStatus.SC_FORBIDDEN + && "too frequent".equals(result.getString("detail"))) { + handler.sendEmptyMessage(2); + } + } catch (JSONException e) { + e.printStackTrace(); + } + } else { + handler.sendEmptyMessage(1); + } } else { + dialog.dismiss(); handler.sendEmptyMessage(1); } } diff --git a/app/src/main/java/com/gh/gamecenter/GameNewsActivity.java b/app/src/main/java/com/gh/gamecenter/GameNewsActivity.java index 049a905f94..5120e127d5 100644 --- a/app/src/main/java/com/gh/gamecenter/GameNewsActivity.java +++ b/app/src/main/java/com/gh/gamecenter/GameNewsActivity.java @@ -39,7 +39,9 @@ public class GameNewsActivity extends BaseActivity implements View.OnClickListen private ArrayList typeList; + private String gameName; private String gameId; + private String entrance; private float startY = 0; @@ -47,6 +49,8 @@ public class GameNewsActivity extends BaseActivity implements View.OnClickListen protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); + entrance = getIntent().getStringExtra("entrance"); + View contentView = View.inflate(this, R.layout.activity_game_news, null); ivSearch = new ImageView(this); @@ -63,7 +67,7 @@ public class GameNewsActivity extends BaseActivity implements View.OnClickListen ivSearch.setOnClickListener(this); ivSearch.setVisibility(View.GONE); - String gameName = getIntent().getStringExtra("gameName"); + gameName = getIntent().getStringExtra("gameName"); init(contentView, gameName); adapterMap = new ArrayMap<>(); @@ -76,7 +80,7 @@ public class GameNewsActivity extends BaseActivity implements View.OnClickListen game_news_list.setHasFixedSize(true); layoutManager = new LinearLayoutManager(this); game_news_list.setLayoutManager(layoutManager); - adapter = new GameNewsAdapter(this, typeList, game_news_list, gameId, "全部"); + adapter = new GameNewsAdapter(this, typeList, game_news_list, gameId, "全部", entrance); adapterMap.put("全部", adapter); game_news_list.setAdapter(adapter); game_news_list.setOnScrollListener(new RecyclerView.OnScrollListener() { @@ -134,7 +138,7 @@ public class GameNewsActivity extends BaseActivity implements View.OnClickListen public void onEventMainThread(EBTypeChange change) { adapter = adapterMap.get(change.getType()); if (adapter == null) { - adapter = new GameNewsAdapter(this, typeList, game_news_list, gameId, change.getType()); + adapter = new GameNewsAdapter(this, typeList, game_news_list, gameId, change.getType(), entrance); adapterMap.put(change.getType(), adapter); } game_news_list.setAdapter(adapter); diff --git a/app/src/main/java/com/gh/gamecenter/MainActivity.java b/app/src/main/java/com/gh/gamecenter/MainActivity.java index ddfb6872f9..8bd539743e 100644 --- a/app/src/main/java/com/gh/gamecenter/MainActivity.java +++ b/app/src/main/java/com/gh/gamecenter/MainActivity.java @@ -53,10 +53,13 @@ import com.gh.common.util.TimestampUtils; import com.gh.common.util.TokenUtils; import com.gh.common.util.TrafficUtils; import com.gh.common.util.Utils; +import com.gh.download.DataChanger; import com.gh.download.DataWatcher; +import com.gh.download.DownloadDao; import com.gh.download.DownloadEntity; import com.gh.download.DownloadManager; import com.gh.download.DownloadStatus; +import com.gh.download.DownloadTask; import com.gh.gamecenter.db.info.ConcernInfo; import com.gh.gamecenter.db.info.GameInfo; import com.gh.gamecenter.db.info.SuspectedGameInfo; @@ -171,7 +174,6 @@ public class MainActivity extends BaseFragmentActivity implements OnClickListene kv.put("版本", downloadEntity.getPlatform()); kv.put("状态", "下载完成"); - String entrance = downloadEntity.getEntrance(); if (downloadEntity.isUpdate()) { DataUtils.onEvent(MainActivity.this, "游戏更新", downloadEntity.getName(), kv); @@ -182,7 +184,7 @@ public class MainActivity extends BaseFragmentActivity implements OnClickListene Map kv2 = new HashMap<>(); kv2.put("版本", downloadEntity.getPlatform()); kv2.put("状态", "下载完成"); - kv2.put("位置", entrance + "-完成"); + kv2.put("位置", downloadEntity.getEntrance() + "-完成"); DataUtils.onEvent(MainActivity.this, "游戏下载位置", downloadEntity.getName(), kv2); } @@ -199,14 +201,19 @@ public class MainActivity extends BaseFragmentActivity implements OnClickListene map.put("game_id", downloadEntity.getGameId()); if (downloadEntity.isPluggable()) { map.put("method", "插件化"); + map.put("btn_status", "插件化"); + } else if (downloadEntity.isUpdate()) { + map.put("method", "更新"); + map.put("btn_status", "更新"); } else { map.put("method", "正常"); + map.put("btn_status", "下载"); } map.put("platform", PlatformUtils.getInstance(getApplicationContext()) .getPlatformName(downloadEntity.getPlatform())); map.put("status", "完成"); map.put("location", downloadEntity.getLocation()); - map.put("from", entrance); + map.put("entrance", downloadEntity.getEntrance()); map.put("network", NetworkUtils.getConnectedType(MainActivity.this)); DataCollectionManager.onEvent(MainActivity.this, "download", map); @@ -419,6 +426,9 @@ public class MainActivity extends BaseFragmentActivity implements OnClickListene // 初始化PlatformUtils PlatformUtils.getInstance(getApplicationContext()); + // 解决助手奔溃后导致的下载状态保留问题 + DownloadManager.getInstance(this).checkAll(); + // 添加观察者 DownloadManager.getInstance(this).addObserver(dataWatcher); diff --git a/app/src/main/java/com/gh/gamecenter/NewsSearchActivity.java b/app/src/main/java/com/gh/gamecenter/NewsSearchActivity.java index 418f48b18b..8dcc9e6d92 100644 --- a/app/src/main/java/com/gh/gamecenter/NewsSearchActivity.java +++ b/app/src/main/java/com/gh/gamecenter/NewsSearchActivity.java @@ -22,12 +22,14 @@ import com.android.volley.VolleyError; import com.gh.base.AppController; import com.gh.base.BaseActivity; import com.gh.common.constant.Config; +import com.gh.common.util.DataUtils; import com.gh.common.util.DisplayUtils; import com.gh.common.util.MeasureHeightLayoutManager; import com.gh.common.util.NewsUtils; import com.gh.common.view.VerticalItemDecoration; import com.gh.gamecenter.adapter.viewholder.FooterViewHolder; import com.gh.gamecenter.entity.NewsEntity; +import com.gh.gamecenter.manager.DataCollectionManager; import com.gh.gamecenter.volley.extended.JsonArrayExtendedRequest; import com.google.gson.Gson; import com.google.gson.reflect.TypeToken; @@ -35,7 +37,9 @@ import com.google.gson.reflect.TypeToken; import org.json.JSONArray; import java.util.ArrayList; +import java.util.HashMap; import java.util.List; +import java.util.Map; /** * Created by khy on 2016/8/22. @@ -44,15 +48,15 @@ public class NewsSearchActivity extends BaseActivity { public static final String TAG = NewsSearchActivity.class.getSimpleName(); - private RecyclerView mNewsRecyclerView; + private RecyclerView gamedetail_news_rv; private List newsEntities; private NewsSearchAdapter searchAdapter; - private TextView tvSearch; + private TextView tv_search; private LinearLayout reuse_none_data; - private EditText edSearch; - private LinearLayout llLoading; - private LinearLayout noConnection; - private CardView cardView; + private EditText et_search; + private LinearLayout gamedetail_news_ll_loading; + private LinearLayout reuse_no_connection; + private CardView gamedetail_news_cardView; private MeasureHeightLayoutManager layoutManager; @@ -63,6 +67,7 @@ public class NewsSearchActivity extends BaseActivity { private String gameName; private String searchKey; private String gameId; + private String entrance; private Handler handler = new Handler(); @@ -77,6 +82,7 @@ public class NewsSearchActivity extends BaseActivity { gameName = intent.getExtras().getString("gameName"); searchKey = intent.getExtras().getString("searchKey"); gameId = intent.getExtras().getString("gameId"); + entrance = intent.getExtras().getString("entrance"); View view = View.inflate(this, R.layout.activity_gamedetail_news, null); init(view, gameName); @@ -87,21 +93,13 @@ public class NewsSearchActivity extends BaseActivity { findViewById(R.id.gamedetail_news_type_ll).setVisibility(View.GONE); findViewById(R.id.ll_search).setVisibility(View.VISIBLE); - mNewsRecyclerView = (RecyclerView) findViewById(R.id.gamedetail_news_rv); - noConnection = (LinearLayout) findViewById(R.id.reuse_no_connection); - llLoading = (LinearLayout) findViewById(R.id.gamedetail_news_ll_loading); - cardView = (CardView) findViewById(R.id.gamedetail_news_cardView); - reuse_none_data = (LinearLayout) findViewById(R.id.reuse_none_data); - layoutManager = new MeasureHeightLayoutManager(this); - mNewsRecyclerView.setLayoutManager(layoutManager); - mNewsRecyclerView.setAdapter(searchAdapter); - mNewsRecyclerView.addItemDecoration(new VerticalItemDecoration(NewsSearchActivity.this, 1)); + gamedetail_news_rv.setLayoutManager(layoutManager); + gamedetail_news_rv.setAdapter(searchAdapter); + gamedetail_news_rv.addItemDecoration(new VerticalItemDecoration(NewsSearchActivity.this, 1)); - edSearch = (EditText) findViewById(R.id.et_search); - tvSearch = (TextView) findViewById(R.id.tv_search); - edSearch.setText(searchKey); + et_search.setText(searchKey); new Thread(new Runnable() { @Override @@ -110,16 +108,16 @@ public class NewsSearchActivity extends BaseActivity { } }).start(); - tvSearch.setOnClickListener(new View.OnClickListener() { + tv_search.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { - searchKey = edSearch.getText().toString().trim(); - if (searchKey.length() >= 1){ + searchKey = et_search.getText().toString().trim(); + if (searchKey.length() >= 1) { newsEntities.clear(); searchAdapter.notifyDataSetChanged(); - llLoading.setVisibility(View.VISIBLE); + gamedetail_news_ll_loading.setVisibility(View.VISIBLE); reuse_none_data.setVisibility(View.GONE); - cardView.setVisibility(View.GONE); + gamedetail_news_cardView.setVisibility(View.GONE); InputMethodManager imm = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE); imm.hideSoftInputFromWindow(v.getWindowToken(), 0); handler.postDelayed(new Runnable() { @@ -137,7 +135,7 @@ public class NewsSearchActivity extends BaseActivity { } }); - mNewsRecyclerView.setOnScrollListener(new RecyclerView.OnScrollListener() { + gamedetail_news_rv.setOnScrollListener(new RecyclerView.OnScrollListener() { @Override public void onScrollStateChanged(RecyclerView recyclerView, int newState) { super.onScrollStateChanged(recyclerView, newState); @@ -150,12 +148,12 @@ public class NewsSearchActivity extends BaseActivity { } }); - noConnection.setOnClickListener(new View.OnClickListener() { + reuse_no_connection.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { - noConnection.setVisibility(View.GONE); - llLoading.setVisibility(View.VISIBLE); - cardView.setVisibility(View.GONE); + reuse_no_connection.setVisibility(View.GONE); + gamedetail_news_ll_loading.setVisibility(View.VISIBLE); + gamedetail_news_cardView.setVisibility(View.GONE); handler.postDelayed(new Runnable() { @Override public void run() { @@ -168,6 +166,13 @@ public class NewsSearchActivity extends BaseActivity { } private void loadNewsData(final int page) { + DataUtils.onEvent(this, "游戏新闻搜索", searchKey); + + Map map = new HashMap<>(); + map.put("key", searchKey); + map.put("from", "游戏新闻搜索"); + DataCollectionManager.onEvent(this, "search", map); + String url = Config.HOST + "v1d45/search/news?game_id=" + gameId + "&keyword=" + Uri.encode(searchKey) + "&page="+ page + "&limit=20"; final JsonArrayExtendedRequest request = new JsonArrayExtendedRequest(url, @@ -182,13 +187,13 @@ public class NewsSearchActivity extends BaseActivity { newsEntities.addAll(news); searchAdapter.notifyDataSetChanged(); isLoadOver = true; - llLoading.setVisibility(View.GONE); - cardView.setVisibility(View.VISIBLE); + gamedetail_news_ll_loading.setVisibility(View.GONE); + gamedetail_news_cardView.setVisibility(View.VISIBLE); if (newsEntities.size() == 0){ - cardView.setVisibility(View.GONE); + gamedetail_news_cardView.setVisibility(View.GONE); reuse_none_data.setVisibility(View.VISIBLE); }else { - cardView.setVisibility(View.VISIBLE); + gamedetail_news_cardView.setVisibility(View.VISIBLE); reuse_none_data.setVisibility(View.GONE); } if (news.isEmpty() || (news.size() < 20)) { @@ -200,8 +205,8 @@ public class NewsSearchActivity extends BaseActivity { @Override public void onErrorResponse(VolleyError error) { if (page ==1){ - noConnection.setVisibility(View.VISIBLE); - llLoading.setVisibility(View.GONE); + reuse_no_connection.setVisibility(View.VISIBLE); + gamedetail_news_ll_loading.setVisibility(View.GONE); } isLoadOver = true; toast("加载失败,请检查网络状态"); @@ -219,15 +224,15 @@ public class NewsSearchActivity extends BaseActivity { gameName = null; searchKey = null; gameId = null; - mNewsRecyclerView = null; + gamedetail_news_rv = null; newsEntities = null; searchAdapter = null; - tvSearch = null; + tv_search = null; reuse_none_data = null; - edSearch = null; - llLoading = null; - noConnection = null; - cardView = null; + et_search = null; + gamedetail_news_ll_loading = null; + reuse_no_connection = null; + gamedetail_news_cardView = null; layoutManager = null; handler = null; } @@ -277,9 +282,22 @@ public class NewsSearchActivity extends BaseActivity { @Override public void onClick(View v) { NewsEntity newsEntity = newsEntities.get(holder.getPosition()); + + Map kv = new HashMap<>(); + kv.put("名字", newsEntity.getTitle()); + kv.put("位置", String.valueOf(holder.getPosition() + 1)); + DataUtils.onEvent(NewsSearchActivity.this, "点击", "游戏新闻搜索", kv); + + Map map = new HashMap<>(); + map.put("location", "列表"); + map.put("page", "游戏新闻搜索"); + map.put("news", newsEntity.getTitle()); + map.put("news_id", newsEntity.getId()); + DataCollectionManager.onEvent(NewsSearchActivity.this, "click-item", map); + // 统计阅读量 NewsUtils.statNewsViews(newsEntity.getId()); - NewsUtils.startNewsActivity(NewsSearchActivity.this, newsEntity, "游戏详情-全部资讯"); + NewsUtils.startNewsActivity(NewsSearchActivity.this, newsEntity, entrance + "+(游戏新闻搜索)"); } }); }else if (holder instanceof FooterViewHolder){ diff --git a/app/src/main/java/com/gh/gamecenter/adapter/GameNewsAdapter.java b/app/src/main/java/com/gh/gamecenter/adapter/GameNewsAdapter.java index 4d18ced7a0..08c0908924 100644 --- a/app/src/main/java/com/gh/gamecenter/adapter/GameNewsAdapter.java +++ b/app/src/main/java/com/gh/gamecenter/adapter/GameNewsAdapter.java @@ -53,6 +53,7 @@ public class GameNewsAdapter extends RecyclerView.Adapter { private String gameId; private String newsType; + private String entrance; private boolean isLoading; private boolean isRemove; @@ -63,7 +64,8 @@ public class GameNewsAdapter extends RecyclerView.Adapter { ArrayList tList, RecyclerView game_news_list, String id, - String type) { + String type, + String entrance) { this.context = context; this.game_news_list = game_news_list; @@ -73,6 +75,7 @@ public class GameNewsAdapter extends RecyclerView.Adapter { gameId = id; newsType = type; + this.entrance = entrance; isLoading = false; isRemove = false; @@ -167,7 +170,7 @@ public class GameNewsAdapter extends RecyclerView.Adapter { viewHolder.game_news_type_list.setAdapter(new GameNewsTypeListAdapter(typeList, newsType)); } } else if (holder instanceof NewsTextViewHolder) { - NewsTextViewHolder viewHolder = (NewsTextViewHolder) holder; + final NewsTextViewHolder viewHolder = (NewsTextViewHolder) holder; viewHolder.newsType.setVisibility(View.GONE); @@ -197,19 +200,20 @@ public class GameNewsAdapter extends RecyclerView.Adapter { @Override public void onClick(View v) { Map kv = new HashMap<>(); - kv.put("文章类型", newsEntity.getType()); - kv.put("入口", "游戏详情"); - DataUtils.onEvent(context, "资讯-攻略", newsEntity.getTitle(), kv); + kv.put("名字", newsEntity.getTitle()); + kv.put("位置", String.valueOf(viewHolder.getPosition() + 1)); + DataUtils.onEvent(context, "点击", "游戏新闻详情", kv); Map map = new HashMap<>(); - map.put("location", "游戏详情"); + map.put("location", newsType); + map.put("page", "游戏新闻详情"); map.put("news", newsEntity.getTitle()); - map.put("page", "攻略"); + map.put("news_id", newsEntity.getId()); DataCollectionManager.onEvent(context, "click-item", map); - //统计阅读量 + // 统计阅读量 NewsUtils.statNewsViews(newsEntity.getId()); - NewsUtils.startNewsActivity(context, newsEntity, "资讯-攻略"); + NewsUtils.startNewsActivity(context, newsEntity, entrance + "+(游戏新闻详情:" + newsType + ")"); } }); } else if (holder instanceof NewsFooterViewHolder){ @@ -236,9 +240,10 @@ public class GameNewsAdapter extends RecyclerView.Adapter { String searchKey = ((GameNewsSearchViewHolder) holder).game_news_et_search.getText().toString().trim(); if (searchKey.length() >= 1) { Intent intent = new Intent(context,NewsSearchActivity.class); - intent.putExtra("gameName","搜索结果"); - intent.putExtra("searchKey",searchKey); - intent.putExtra("gameId",gameId); + intent.putExtra("gameName", "搜索结果"); + intent.putExtra("searchKey", searchKey); + intent.putExtra("gameId", gameId); + intent.putExtra("entrance", entrance + "+(游戏新闻详情:" + newsType + ")"); context.startActivity(intent); }else { Toast.makeText(context,"请输入关键字",Toast.LENGTH_SHORT).show(); 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 b66e5f95ab..d3ff7a183c 100644 --- a/app/src/main/java/com/gh/gamecenter/download/GameUpdateAdapter.java +++ b/app/src/main/java/com/gh/gamecenter/download/GameUpdateAdapter.java @@ -38,6 +38,7 @@ import com.gh.gamecenter.entity.GameUpdateEntity; import com.gh.gamecenter.eventbus.EBDownloadChanged; import com.gh.gamecenter.eventbus.EBPerformClick; import com.gh.gamecenter.manager.ConcernManager; +import com.gh.gamecenter.manager.DataCollectionManager; import com.gh.gamecenter.manager.PackageManager; import com.gh.gamecenter.volley.extended.JsonArrayExtendedRequest; import com.google.gson.Gson; @@ -597,6 +598,24 @@ public class GameUpdateAdapter extends RecyclerView.Adapter map = new HashMap<>(); + map.put("game", updateEntity.getName()); + map.put("game_id", updateEntity.getId()); + map.put("status", "开始"); + if (updateEntity.isPluggable()) { + map.put("method", "插件化"); + map.put("btn_status", "插件化"); + } else { + map.put("method", "更新"); + map.put("btn_status", "更新"); + } + map.put("platform", PlatformUtils.getInstance(context) + .getPlatformName(updateEntity.getPlatform())); + map.put("location", "游戏更新"); + map.put("entrance", "(下载管理:游戏更新)"); + map.put("network", NetworkUtils.getConnectedType(context)); + DataCollectionManager.onEvent(context, "download", map); + DownloadEntity downloadEntity = new DownloadEntity(); downloadEntity.setUrl(updateEntity.getUrl()); downloadEntity.setName(updateEntity.getName()); @@ -615,6 +634,8 @@ public class GameUpdateAdapter extends RecyclerView.Adapter kv = new HashMap<>(); + kv.put("状态", "取消关注"); + DataUtils.onEvent(context, "游戏关注", gameEntity.getName(), kv); + Map kv2 = new HashMap<>(); kv2.put("点击", "取消关注"); DataUtils.onEvent(context, "插件数据", gameEntity.getName(), kv2); + Map map = new HashMap<>(); + map.put("game", gameEntity.getName()); + map.put("game_id", gameEntity.getId()); + map.put("type", "取消关注"); + DataCollectionManager.onEvent(context, "concern", map); DialogUtils.showCancelDialog(context, new DialogUtils.ConfiremListener() { @Override public void onConfirem() { @@ -351,9 +360,23 @@ public class NewsDetailAdapter extends RecyclerView.Adapter { viewHolder.itemView.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { + Map kv = new HashMap<>(); + kv.put("名字", gameEntity.getName()); + kv.put("位置", "游戏信息"); + DataUtils.onEvent(context, "点击", "新闻详情", kv); + + Map map = new HashMap<>(); + map.put("location", "游戏信息"); + map.put("page", "新闻详情"); + map.put("game", gameEntity.getName()); + map.put("game_id", gameEntity.getId()); + map.put("news", newsDetailEntity.getTitle()); + map.put("news_id", newsDetailEntity.getId()); + DataCollectionManager.onEvent(context, "click-item", map); + Intent intent = new Intent(context, GameDetailActivity.class); intent.putExtra("gameId", gameEntity.getId()); - intent.putExtra("entrance", entrance); + intent.putExtra("entrance", entrance + "+(新闻详情)"); context.startActivity(intent); } }); diff --git a/app/src/main/java/com/gh/gamecenter/personal/PersonalFragment.java b/app/src/main/java/com/gh/gamecenter/personal/PersonalFragment.java index c1e2cd86da..ff1b7782d4 100644 --- a/app/src/main/java/com/gh/gamecenter/personal/PersonalFragment.java +++ b/app/src/main/java/com/gh/gamecenter/personal/PersonalFragment.java @@ -436,6 +436,8 @@ public class PersonalFragment extends Fragment implements View.OnClickListener, Toast.makeText(getActivity(), "昵称已存在", Toast.LENGTH_SHORT).show(); } else if ("no change".equals(detail)) { Toast.makeText(getActivity(), "昵称一致", Toast.LENGTH_SHORT).show(); + } else if ("too frequent".equals(detail)) { + Toast.makeText(getActivity(), "修改太频繁,请稍后再试", Toast.LENGTH_SHORT).show(); } } catch (JSONException e) { e.printStackTrace();