diff --git a/app/build.gradle b/app/build.gradle index 99f1da1327..1796971109 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -118,7 +118,6 @@ android { dependencies { compile fileTree(dir: 'libs', include: ['*.jar']) testCompile 'junit:junit:4.12' - compile 'pl.droidsonroids.gif:android-gif-drawable:1.1.16' compile 'com.android.support:cardview-v7:21.0.0' compile ('com.facebook.fresco:fresco:0.12.0') { diff --git a/app/src/main/java/com/gh/base/DetailActivity.java b/app/src/main/java/com/gh/base/DetailActivity.java index 11d68890f5..6171178436 100644 --- a/app/src/main/java/com/gh/base/DetailActivity.java +++ b/app/src/main/java/com/gh/base/DetailActivity.java @@ -36,7 +36,6 @@ import com.gh.gamecenter.manager.PackageManager; import com.tencent.tauth.Tencent; import java.util.HashMap; -import java.util.List; import java.util.Map; /** @@ -61,6 +60,7 @@ public abstract class DetailActivity extends BaseActivity implements View.OnClic protected String name; protected String title; protected String downloadAddWord; + protected String downloadOffText; protected Handler handler = new Handler(); @@ -167,7 +167,11 @@ public abstract class DetailActivity extends BaseActivity implements View.OnClic detail_tv_download.setVisibility(View.VISIBLE); detail_pb_progressbar.setVisibility(View.GONE); detail_tv_per.setVisibility(View.GONE); - detail_tv_download.setText("暂无下载"); + if (TextUtils.isEmpty(downloadOffText)) { + detail_tv_download.setText("暂无下载"); + } else { + detail_tv_download.setText(downloadOffText); + } detail_tv_download.setBackgroundResource(R.drawable.game_item_btn_pause_style); detail_tv_download.setTextColor(0xFF999999); detail_tv_download.setClickable(false); @@ -240,16 +244,13 @@ public abstract class DetailActivity extends BaseActivity implements View.OnClic && gameEntity.getApk() != null && gameEntity.getApk().size() == 1) { String url = gameEntity.getApk().get(0).getUrl(); - List list = DownloadManager.getInstance(getApplicationContext()).getAll(); - for (DownloadEntity entry : list) { - if (url.equals(entry.getUrl())) { - mDownloadEntity = entry; - detail_tv_download.setVisibility(View.GONE); - detail_pb_progressbar.setVisibility(View.VISIBLE); - detail_tv_per.setVisibility(View.VISIBLE); - invalidate(); - break; - } + DownloadEntity downloadEntity = DownloadManager.getInstance(getApplicationContext()).get(url); + if (downloadEntity != null) { + mDownloadEntity = downloadEntity; + detail_tv_download.setVisibility(View.GONE); + detail_pb_progressbar.setVisibility(View.VISIBLE); + detail_tv_per.setVisibility(View.VISIBLE); + invalidate(); } } } diff --git a/app/src/main/java/com/gh/common/util/BitmapUtils.java b/app/src/main/java/com/gh/common/util/BitmapUtils.java new file mode 100644 index 0000000000..3c16288b34 --- /dev/null +++ b/app/src/main/java/com/gh/common/util/BitmapUtils.java @@ -0,0 +1,87 @@ +package com.gh.common.util; + +import android.graphics.Bitmap; +import android.graphics.BitmapFactory; +import android.graphics.Matrix; +import android.media.ExifInterface; + +import java.io.IOException; + +/** + * Created by LGT on 2016/10/21. + */ +public class BitmapUtils { + + /** + * 根据文件路径返回bitmap + * @param filepath 文件路径 + * @param w 宽 + * @param h 高 + * @return bitmap + */ + public static Bitmap getBitmapByFile(String filepath, int w, int h) { + try { + BitmapFactory.Options options = new BitmapFactory.Options(); + // 设置为ture只获取图片大小 + options.inJustDecodeBounds = true; + options.inPreferredConfig = Bitmap.Config.RGB_565; + // 返回为空 + BitmapFactory.decodeFile(filepath, options); + int width = options.outWidth; + int height = options.outHeight; + float scaleWidth = 0.f, scaleHeight = 0.f; + if (width > w || height > h) { + // 缩放 + scaleWidth = ((float) width) / w; + scaleHeight = ((float) height) / h; + } + options.inJustDecodeBounds = false; + int scale = (int) Math.ceil(Math.max(scaleWidth, scaleHeight)); + if (scale % 2 == 1) { + scale += 1; + } + options.inSampleSize = scale; + Bitmap bitmap = BitmapFactory.decodeFile(filepath, options); + bitmap = rotatePicture(filepath, bitmap); + if (bitmap != null) { + return bitmap; + } + return null; + } catch (Exception e) { + e.printStackTrace(); + return null; + } + } + + public static Bitmap rotatePicture(String path, Bitmap bitmap) { + int rotate = 0; + try { + ExifInterface exifInterface = new ExifInterface(path); + int orientation = exifInterface.getAttributeInt( + ExifInterface.TAG_ORIENTATION, + ExifInterface.ORIENTATION_NORMAL); + switch (orientation) { + case ExifInterface.ORIENTATION_ROTATE_90: + rotate = 90; + break; + case ExifInterface.ORIENTATION_ROTATE_180: + rotate = 180; + break; + case ExifInterface.ORIENTATION_ROTATE_270: + rotate = 270; + break; + } + } catch (IOException e) { + e.printStackTrace(); + } + if (rotate != 0) { + Matrix matrix = new Matrix(); + matrix.setRotate(rotate); + return Bitmap.createBitmap(bitmap, 0, 0, bitmap.getWidth(), + bitmap.getHeight(), matrix, true); + } else { + return bitmap; + } + } + +} diff --git a/app/src/main/java/com/gh/common/util/DialogUtils.java b/app/src/main/java/com/gh/common/util/DialogUtils.java index a2f6eee47f..563cdfdf81 100644 --- a/app/src/main/java/com/gh/common/util/DialogUtils.java +++ b/app/src/main/java/com/gh/common/util/DialogUtils.java @@ -101,8 +101,8 @@ public class DialogUtils { } // 网络劫持时 打开QQ客户端,创建临时会话 - public static void showQqSessionDialog(final Context context, String qq){ - if (qq == null){ + public static void showQqSessionDialog(final Context context, String qq) { + if (qq == null) { qq = "2586716223";// 默认客服QQ } final String finalQq = qq; 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 1874f9ef93..59096ae2d3 100644 --- a/app/src/main/java/com/gh/common/util/FileUtils.java +++ b/app/src/main/java/com/gh/common/util/FileUtils.java @@ -5,7 +5,6 @@ import android.os.Environment; import android.os.StatFs; import android.os.StrictMode; -import org.apache.http.HttpStatus; import org.json.JSONObject; import java.io.DataInputStream; @@ -96,21 +95,6 @@ public class FileUtils { } return true; } - - public static void checkDirExists(String dirName) { - File file = Environment.getExternalStorageDirectory(); - if (file.isDirectory()) { - File[] fs = file.listFiles(); - for (int i = 0; i < fs.length; i++) { - if (fs[i].isDirectory() - && fs[i].getName().equalsIgnoreCase(dirName) - && !fs[i].getName().equals(dirName)) { - fs[i].delete(); - break; - } - } - } - } public static boolean isMounted() { return Environment.getExternalStorageState().equals(Environment.MEDIA_MOUNTED); @@ -286,14 +270,14 @@ public class FileUtils { int statusCode = connection.getResponseCode(); Utils.log("statusCode = " + statusCode); - if (statusCode == HttpStatus.SC_OK) { + if (statusCode == HttpURLConnection.HTTP_OK) { // {"icon":"http:\/\/gh-test-1.oss-cn-qingdao.aliyuncs.com\/pic\/57e4f4d58a3200042d29492f.jpg"} JSONObject response = new JSONObject(b.toString().trim()); - response.put("statusCode", HttpStatus.SC_OK); + response.put("statusCode", HttpURLConnection.HTTP_OK); return response; - } else if (statusCode == HttpStatus.SC_FORBIDDEN) { + } else if (statusCode == HttpURLConnection.HTTP_FORBIDDEN) { JSONObject response = new JSONObject(b.toString().trim()); - response.put("statusCode", HttpStatus.SC_FORBIDDEN); + response.put("statusCode", HttpURLConnection.HTTP_FORBIDDEN); return response; } } catch (Exception e) { diff --git a/app/src/main/java/com/gh/common/util/GameViewUtils.java b/app/src/main/java/com/gh/common/util/GameViewUtils.java index ca52a764d1..81177b2e62 100644 --- a/app/src/main/java/com/gh/common/util/GameViewUtils.java +++ b/app/src/main/java/com/gh/common/util/GameViewUtils.java @@ -41,22 +41,6 @@ public class GameViewUtils { } } - // 获取游戏标签列表视图 - public static void setLabelList(Context context, LinearLayout labelLayout, String tag) { - labelLayout.removeAllViews(); - // 添加tag标签 - if (tag != null && !tag.isEmpty()) { - String[] tags = tag.split(","); - for (int i = 0; i < tags.length; i++) { - if (i == tags.length - 1) { - labelLayout.addView(getGameTagView(context, tags[i], 0)); - } else { - labelLayout.addView(getGameTagView(context, tags[i], DisplayUtils.dip2px(context, 5))); - } - } - } - } - public static TextView getGameTagView(Context context, String tagStr, int rightMargin) { LinearLayout.LayoutParams lparams = new LinearLayout.LayoutParams( LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT); diff --git a/app/src/main/java/com/gh/common/util/PlatformUtils.java b/app/src/main/java/com/gh/common/util/PlatformUtils.java index 7359311748..494f7cff63 100644 --- a/app/src/main/java/com/gh/common/util/PlatformUtils.java +++ b/app/src/main/java/com/gh/common/util/PlatformUtils.java @@ -15,13 +15,13 @@ import com.gh.gamecenter.R; import com.gh.gamecenter.eventbus.EBReuse; import com.gh.gamecenter.volley.extended.JsonArrayExtendedRequest; -import org.apache.http.HttpStatus; import org.json.JSONArray; import org.json.JSONException; import org.json.JSONObject; import java.io.File; import java.io.IOException; +import java.net.HttpURLConnection; import java.util.ArrayList; import java.util.HashSet; import java.util.Properties; @@ -175,7 +175,7 @@ public class PlatformUtils { + url.substring(url.lastIndexOf("/") + 1); try { int code = FileUtils.downloadFile(url, savePath); - if (code == HttpStatus.SC_OK) { + if (code == HttpURLConnection.HTTP_OK) { success++; } } catch (IOException e) { 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 1b6bb30711..9720657efc 100644 --- a/app/src/main/java/com/gh/common/view/DownloadDialog.java +++ b/app/src/main/java/com/gh/common/view/DownloadDialog.java @@ -105,6 +105,9 @@ public class DownloadDialog implements OnCollectionCallBackListener { public void showPopupWindow(View view, GameEntity gameEntity, String entrance, String location) { + if (isShow && (popupWindow == null || !popupWindow.isShowing())) { + isShow = false; + } if (isShow) { return; } diff --git a/app/src/main/java/com/gh/download/DownloadThread.java b/app/src/main/java/com/gh/download/DownloadThread.java index 27ec069a5f..f4f012908a 100644 --- a/app/src/main/java/com/gh/download/DownloadThread.java +++ b/app/src/main/java/com/gh/download/DownloadThread.java @@ -7,8 +7,6 @@ import android.util.Log; import com.gh.common.util.HttpsUtils; import com.gh.common.util.Utils; -import org.apache.http.HttpStatus; - import java.io.BufferedInputStream; import java.io.BufferedOutputStream; import java.io.File; @@ -52,66 +50,34 @@ public class DownloadThread extends Thread { if (TextUtils.isEmpty(entry.getUrl())) { listener.onStatusChanged(DownloadStatus.notfound); - Utils.log(DownloadThread.class.getSimpleName(), - "error-->url is empty"); + Utils.log(DownloadThread.class.getSimpleName(), "error-->url is empty"); return; } - URL url = new URL(entry.getUrl()); + Utils.log("url = " + entry.getUrl()); - HttpURLConnection connection; - if ("https".equals(url.getProtocol())) { - connection = HttpsUtils.getHttpsURLConnection(url); - } else { - connection = (HttpURLConnection) url.openConnection(); - } + HttpURLConnection connection = openConnection(new URL(entry.getUrl()), targetFile.length()); - connection.setRequestMethod("GET"); - connection.setConnectTimeout(CONNECT_TIME); - connection.setReadTimeout(READ_TIME); - connection.setRequestProperty("RANGE", - "bytes=" + targetFile.length() + "-"); - Utils.log(DownloadThread.class.getSimpleName(), - "startPosition-->" + targetFile.length()); - //设置自动重定向 - connection.setInstanceFollowRedirects(true); + Utils.log(DownloadThread.class.getSimpleName(), "startPosition-->" + targetFile.length()); int code = connection.getResponseCode(); Utils.log("code = " +code); - if (code == HttpStatus.SC_MOVED_PERMANENTLY - || code == HttpStatus.SC_MOVED_TEMPORARILY) { + if (code == HttpURLConnection.HTTP_MOVED_PERM + || code == HttpURLConnection.HTTP_MOVED_TEMP) { //未自动重定向 String location = connection.getHeaderField("Location"); Utils.log("location = " + location); - url = new URL(location); - connection = (HttpURLConnection) url.openConnection(); - connection.setRequestMethod("GET"); - connection.setConnectTimeout(CONNECT_TIME); - connection.setReadTimeout(READ_TIME); - connection.setRequestProperty("RANGE", - "bytes=" + targetFile.length() + "-"); - Utils.log(DownloadThread.class.getSimpleName(), - "startPosition-->" + targetFile.length()); - //设置自动重定向 - connection.setInstanceFollowRedirects(true); + connection = openConnection(new URL(location), targetFile.length()); code = connection.getResponseCode(); } - if (code == HttpStatus.SC_NOT_FOUND) { + if (code == HttpURLConnection.HTTP_NOT_FOUND) { // 404 Not Found listener.onStatusChanged(DownloadStatus.notfound); - Utils.log(DownloadThread.class.getSimpleName(), - "error-->404 Not Found"); + Utils.log(DownloadThread.class.getSimpleName(), "error-->404 Not Found"); return; } - bis = new BufferedInputStream(connection.getInputStream()); - if (targetFile.length() > 0) { - bos = new BufferedOutputStream(new FileOutputStream(entry.getPath(), true)); - } else { - bos = new BufferedOutputStream(new FileOutputStream(entry.getPath())); - } - String eTag = connection.getHeaderField("ETag"); if (!TextUtils.isEmpty(eTag) && eTag.startsWith("\"") && eTag.endsWith("\"")) { eTag = eTag.substring(1, eTag.length() - 1); @@ -122,8 +88,7 @@ public class DownloadThread extends Thread { Utils.log("eTag = " + eTag); Utils.log("eTag2 = " + eTag2); listener.onStatusChanged(DownloadStatus.hijack); - Utils.log(DownloadThread.class.getSimpleName(), - "error-->链接被劫持"); + Utils.log(DownloadThread.class.getSimpleName(), "error-->链接被劫持"); return; } @@ -132,14 +97,20 @@ public class DownloadThread extends Thread { if (entry.getSize() == 0) { entry.setSize(conentLength); DownloadDao.getInstance(context).newOrUpdate(entry); - Utils.log(DownloadThread.class.getSimpleName(), - "记录第一次长度"); + Utils.log(DownloadThread.class.getSimpleName(), "记录第一次长度"); } Utils.log(DownloadThread.class.getSimpleName(), "progress:" + entry.getProgress() + "/curfilesize:" + targetFile.length() + "=====contentLength:" + conentLength + "/ totalSize:" + entry.getSize()); + bis = new BufferedInputStream(connection.getInputStream()); + if (targetFile.length() > 0) { + bos = new BufferedOutputStream(new FileOutputStream(entry.getPath(), true)); + } else { + bos = new BufferedOutputStream(new FileOutputStream(entry.getPath())); + } + byte[] buffer = new byte[2048]; int len; while ((len = bis.read(buffer)) != -1) { @@ -160,16 +131,15 @@ public class DownloadThread extends Thread { listener.onStatusChanged(DownloadStatus.done); } } catch (Exception e) { - String errorMsg = Log.getStackTraceString(e); + // TODO 默认第一次错误自动恢复一次下载 - //e.getMessage() will null error + String errorMsg = Log.getStackTraceString(e); if (!TextUtils.isEmpty(e.getMessage()) && e.getMessage().contains("connection timeout")) { listener.onStatusChanged(DownloadStatus.timeout, errorMsg); } else { listener.onStatusChanged(DownloadStatus.neterror, errorMsg); } - Utils.log(DownloadThread.class.getSimpleName(), - "exception-->" + e.toString()); + Utils.log(DownloadThread.class.getSimpleName(), "exception-->" + e.toString()); } finally { if (bis != null) { try { @@ -188,6 +158,23 @@ public class DownloadThread extends Thread { } } + private HttpURLConnection openConnection(URL url, long range) throws Exception { + HttpURLConnection connection; + if ("https".equals(url.getProtocol())) { + connection = HttpsUtils.getHttpsURLConnection(url); + } else { + connection = (HttpURLConnection) url.openConnection(); + } + connection.setRequestMethod("GET"); + connection.setConnectTimeout(CONNECT_TIME); + connection.setReadTimeout(READ_TIME); + connection.setDoInput(true); + connection.setRequestProperty("RANGE", "bytes=" + range + "-"); + //设置自动重定向 + connection.setInstanceFollowRedirects(true); + return connection; + } + public void setStatus(DownloadStatus status) { this.status = status; } diff --git a/app/src/main/java/com/gh/gamecenter/CropImageActivity.java b/app/src/main/java/com/gh/gamecenter/CropImageActivity.java index 5670c428d0..681c8c2125 100644 --- a/app/src/main/java/com/gh/gamecenter/CropImageActivity.java +++ b/app/src/main/java/com/gh/gamecenter/CropImageActivity.java @@ -2,33 +2,39 @@ package com.gh.gamecenter; import android.app.Dialog; import android.content.Intent; +import android.graphics.Bitmap; import android.os.Bundle; import android.os.Handler; import android.os.Message; import android.util.TypedValue; import android.view.View; import android.view.ViewGroup.LayoutParams; +import android.widget.ImageView; import android.widget.RelativeLayout; import android.widget.TextView; import com.gh.base.BaseActivity; import com.gh.common.constant.Config; +import com.gh.common.util.BitmapUtils; import com.gh.common.util.DialogUtils; import com.gh.common.util.DisplayUtils; import com.gh.common.util.FileUtils; 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; +import java.lang.ref.SoftReference; +import java.net.HttpURLConnection; public class CropImageActivity extends BaseActivity { private CropImageCustom cropimage_custom; + private SoftReference reference; + private Handler handler = new Handler() { @Override public void handleMessage(Message msg) { @@ -76,13 +82,13 @@ public class CropImageActivity extends BaseActivity { if (result != null) { try { int statusCode = result.getInt("statusCode"); - if (statusCode == HttpStatus.SC_OK) { + if (statusCode == HttpURLConnection.HTTP_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 + } else if (statusCode == HttpURLConnection.HTTP_FORBIDDEN && "too frequent".equals(result.getString("detail"))) { handler.sendEmptyMessage(2); } @@ -106,13 +112,27 @@ public class CropImageActivity extends BaseActivity { rparams.addRule(RelativeLayout.CENTER_VERTICAL); confirm.setLayoutParams(rparams); reuse_actionbar.addView(confirm); - - String path = getIntent().getStringExtra("path"); - - // TODO displayFile -// ImageUtils.getInstance(getApplicationContext()).displayFile( -// "file://" + path, cropimage_custom.getCropImageZoomView()); - } + @Override + public void onWindowFocusChanged(boolean hasFocus) { + super.onWindowFocusChanged(hasFocus); + if (hasFocus && (reference == null || reference.get() == null)) { + ImageView imageView = cropimage_custom.getCropImageZoomView(); + Bitmap bitmap = BitmapUtils.getBitmapByFile(getIntent().getStringExtra("path"), + imageView.getWidth(), imageView.getHeight()); + if (bitmap != null) { + reference = new SoftReference<>(bitmap); + imageView.setImageBitmap(reference.get()); + } + } + } + + @Override + protected void onDestroy() { + super.onDestroy(); + if (reference != null) { + reference.get().recycle(); + } + } } diff --git a/app/src/main/java/com/gh/gamecenter/GameDetailActivity.java b/app/src/main/java/com/gh/gamecenter/GameDetailActivity.java index a84fbb51d9..9ffcac43f7 100644 --- a/app/src/main/java/com/gh/gamecenter/GameDetailActivity.java +++ b/app/src/main/java/com/gh/gamecenter/GameDetailActivity.java @@ -91,6 +91,7 @@ public class GameDetailActivity extends DetailActivity implements View.OnClickLi iv_share.setVisibility(View.VISIBLE); } downloadAddWord = adapter.getGameDetailEntity().getDownloadAddWord(); + downloadOffText = gameEntity.getDownloadOffText(); initDownload(true); } @@ -142,12 +143,16 @@ public class GameDetailActivity extends DetailActivity implements View.OnClickLi new Response.Listener() { @Override public void onResponse(JSONObject response) { - Gson gson = new Gson(); - gameEntity = gson.fromJson(response.toString(), GameEntity.class); - title = gameEntity.getName(); - actionbar_tv_title.setText(gameEntity.getName()); - adapter.setGameEntity(gameEntity); - adapter.getGameDetail(); + if (response.length() != 0) { + Gson gson = new Gson(); + gameEntity = gson.fromJson(response.toString(), GameEntity.class); + title = gameEntity.getName(); + actionbar_tv_title.setText(gameEntity.getName()); + adapter.setGameEntity(gameEntity); + adapter.getGameDetail(); + } else { + reuse_no_connection.setVisibility(View.VISIBLE); + } } }, new Response.ErrorListener() { @Override diff --git a/app/src/main/java/com/gh/gamecenter/MainActivity.java b/app/src/main/java/com/gh/gamecenter/MainActivity.java index 7d2707c890..e45b7149f5 100644 --- a/app/src/main/java/com/gh/gamecenter/MainActivity.java +++ b/app/src/main/java/com/gh/gamecenter/MainActivity.java @@ -677,7 +677,6 @@ public class MainActivity extends BaseFragmentActivity implements OnClickListene concernInfo.setPackageNames(packageNames); concernManager.updateByConcern(concernInfo); } - if (isNewFirstLaunch) { //默认安装即为关注 if (!concernManager.isConcern(gameEntity.getId())) { @@ -685,7 +684,6 @@ public class MainActivity extends BaseFragmentActivity implements OnClickListene } } } - addConcernCount(); if (cCount == size) { update(); @@ -854,9 +852,11 @@ public class MainActivity extends BaseFragmentActivity implements OnClickListene new Response.Listener() { @Override public void onResponse(JSONObject response) { - Gson gson = new Gson(); - GameEntity gameEntity = gson.fromJson(response.toString(), GameEntity.class); - list.add(gameEntity); + if (response.length() != 0) { + Gson gson = new Gson(); + GameEntity gameEntity = gson.fromJson(response.toString(), GameEntity.class); + list.add(gameEntity); + } addCount(); if (count == size) { processPluginData(list); @@ -993,18 +993,20 @@ public class MainActivity extends BaseFragmentActivity implements OnClickListene new Response.Listener() { @Override public void onResponse(JSONObject response) { - try { - boolean isShow = response.getBoolean("isShow"); - sp.edit().putBoolean("isShowDisclaimer", isShow).apply(); - if (isShow) { - String content = response.getString("content"); - sp.edit().putString("disclaimer", content).apply(); - if (isFirst) { - DialogUtils.showDisclaimerDialog(MainActivity.this, content); + if (response.length() != 0) { + try { + boolean isShow = response.getBoolean("isShow"); + sp.edit().putBoolean("isShowDisclaimer", isShow).apply(); + if (isShow) { + String content = response.getString("content"); + sp.edit().putString("disclaimer", content).apply(); + if (isFirst) { + DialogUtils.showDisclaimerDialog(MainActivity.this, content); + } } + } catch (JSONException e) { + e.printStackTrace(); } - } catch (JSONException e) { - e.printStackTrace(); } } }, null); @@ -1036,7 +1038,7 @@ public class MainActivity extends BaseFragmentActivity implements OnClickListene Intent toIntent = new Intent(MainActivity.this, clazz); if ("NewsActivity".equals(to) || "NewsDetailActivity".equals(to)) { toIntent.putExtra("newsId", getIntent().getExtras().getString("newsId")); - toIntent.putExtra("entrance", getIntent().getExtras().getString("entrance")); + toIntent.putExtra("entrance", "(插件跳转)"); } else if("DownloadManagerActivity".equals(to)) { String packageName = getIntent().getExtras().getString("packageName"); if (packageName != null) { @@ -1045,7 +1047,7 @@ public class MainActivity extends BaseFragmentActivity implements OnClickListene } } else if ("GameDetailsActivity".equals(to) || "GameDetailActivity".equals(to)) { toIntent.putExtra("gameId", getIntent().getExtras().getString("gameId")); - toIntent.putExtra("entrance", getIntent().getExtras().getString("entrance")); + toIntent.putExtra("entrance", "(插件跳转)"); } else if ("SubjectActivity".equals(to)) { toIntent.putExtra("id", getIntent().getExtras().getString("id")); toIntent.putExtra("name", getIntent().getExtras().getString("name")); @@ -1067,12 +1069,12 @@ public class MainActivity extends BaseFragmentActivity implements OnClickListene startActivity(intent); } else if (from.equals("mipush_news")) { Intent intent = new Intent(MainActivity.this, NewsDetailActivity.class); - intent.putExtra("entrance", "小米推送"); + intent.putExtra("entrance", "(小米推送)"); intent.putExtra("newsId", getIntent().getStringExtra("newsId")); startActivity(intent); } else if (from.equals("mipush_new_game")) { Intent intent = new Intent(MainActivity.this, GameDetailActivity.class); - intent.putExtra("entrance", "小米推送"); + intent.putExtra("entrance", "(小米推送)"); startActivity(intent); } else if (from.equals("mipush_plugin")) { Intent intent = new Intent(MainActivity.this, DownloadManagerActivity.class); @@ -1550,23 +1552,25 @@ public class MainActivity extends BaseFragmentActivity implements OnClickListene new Response.Listener() { @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); - } - // 检查是否能插件化 - 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; + if (response.length() != 0) { + 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); + } + // 检查是否能插件化 + 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; + } } } } diff --git a/app/src/main/java/com/gh/gamecenter/NewsDetailActivity.java b/app/src/main/java/com/gh/gamecenter/NewsDetailActivity.java index e0e1cec5ce..ed2cb4307e 100644 --- a/app/src/main/java/com/gh/gamecenter/NewsDetailActivity.java +++ b/app/src/main/java/com/gh/gamecenter/NewsDetailActivity.java @@ -224,20 +224,28 @@ public class NewsDetailActivity extends DetailActivity implements OnClickListene new Response.Listener() { @Override public void onResponse(JSONObject response) { - Gson gson = new Gson(); - NewsEntity newsEntity = gson.fromJson(response.toString(), NewsEntity.class); - if (newsEntity.getType() != null) { - actionbar_tv_title.setText(newsEntity.getType()); + if (response.length() != 0) { + Gson gson = new Gson(); + NewsEntity newsEntity = gson.fromJson(response.toString(), NewsEntity.class); + if (newsEntity.getType() != null) { + actionbar_tv_title.setText(newsEntity.getType()); + } + + adapter.setId(news_id); + adapter.setType(newsEntity.getType()); + adapter.setTitle(newsEntity.getTitle()); + adapter.getNewsDetail(); + + title = newsEntity.getTitle(); + + iv_share.setVisibility(View.VISIBLE); + } else { + detail_rv_show.setVisibility(View.GONE); + reuse_ll_loading.setVisibility(View.GONE); + detail_ll_bottom.setVisibility(View.GONE); + detail_rv_show.setPadding(0, 0, 0, 0); + reuse_no_connection.setVisibility(View.VISIBLE); } - - adapter.setId(news_id); - adapter.setType(newsEntity.getType()); - adapter.setTitle(newsEntity.getTitle()); - adapter.getNewsDetail(); - - title = newsEntity.getTitle(); - - iv_share.setVisibility(View.VISIBLE); } }, new Response.ErrorListener() { @Override @@ -325,12 +333,15 @@ public class NewsDetailActivity extends DetailActivity implements OnClickListene new Response.Listener() { @Override public void onResponse(JSONObject response) { - Gson gson = new Gson(); - gameEntity = gson.fromJson(response.toString(), GameEntity.class); - adapter.setGameEntity(gameEntity); //出现空指针 找不到原因 - adapter.notifyItemInserted(1); - downloadAddWord = gameEntity.getDownloadAddWord(); - initDownload(true); + if (response.length() != 0) { + Gson gson = new Gson(); + gameEntity = gson.fromJson(response.toString(), GameEntity.class); + adapter.setGameEntity(gameEntity); + adapter.notifyItemInserted(1); + downloadAddWord = gameEntity.getDownloadAddWord(); + downloadOffText = gameEntity.getDownloadOffText(); + initDownload(true); + } } }, null); AppController.addToRequestQueue(gameRequest, TAG); diff --git a/app/src/main/java/com/gh/gamecenter/PluginActivity.java b/app/src/main/java/com/gh/gamecenter/PluginActivity.java index 4238a5d625..8c6db5a379 100644 --- a/app/src/main/java/com/gh/gamecenter/PluginActivity.java +++ b/app/src/main/java/com/gh/gamecenter/PluginActivity.java @@ -136,12 +136,12 @@ public class PluginActivity extends BaseActivity { if (list.get(i).getApk().get(0).getPackageName().equals(busFour.getPackageName())) { list.remove(i); adapter.notifyItemRemoved(location); - adapter.initLocationMap(); break; } } } } + adapter.initLocationMap(); } } diff --git a/app/src/main/java/com/gh/gamecenter/SplashScreenActivity.java b/app/src/main/java/com/gh/gamecenter/SplashScreenActivity.java index 32a1da3e50..fc2ba4b17f 100644 --- a/app/src/main/java/com/gh/gamecenter/SplashScreenActivity.java +++ b/app/src/main/java/com/gh/gamecenter/SplashScreenActivity.java @@ -26,7 +26,6 @@ import com.gh.common.constant.Config; import com.gh.common.util.FileUtils; import com.gh.common.util.PackageUtils; import com.gh.common.util.TimestampUtils; -import com.gh.common.util.Utils; import com.gh.download.DownloadManager; import com.gh.download.DownloadService; import com.gh.gamecenter.db.info.FilterInfo; @@ -295,18 +294,19 @@ public class SplashScreenActivity extends BaseActivity { new Response.Listener() { @Override public void onResponse(JSONObject response) { - Utils.log(response.toString()); - try { - Editor editor = sp.edit(); - editor.putInt("download_box_row", - response.getJSONObject("download_box").getInt("row")); - editor.putInt("download_box_column", - response.getJSONObject("download_box").getInt("column")); - editor.putInt("game_detail_news_type_tab_column", - response.getJSONObject("game_detail_news_type_tab").getInt("column")); - editor.apply(); - } catch (JSONException e) { - e.printStackTrace(); + if (response.length() != 0) { + try { + Editor editor = sp.edit(); + editor.putInt("download_box_row", + response.getJSONObject("download_box").getInt("row")); + editor.putInt("download_box_column", + response.getJSONObject("download_box").getInt("column")); + editor.putInt("game_detail_news_type_tab_column", + response.getJSONObject("game_detail_news_type_tab").getInt("column")); + editor.apply(); + } catch (JSONException e) { + e.printStackTrace(); + } } } }, null); @@ -325,16 +325,18 @@ public class SplashScreenActivity extends BaseActivity { new Response.Listener() { @Override public void onResponse(JSONObject response) { - try { - String status = response.getString("status"); - if ("on".equals(status)) { - sp.edit().putBoolean("isShow", true).apply(); - } else { - sp.edit().putBoolean("isShow", false).apply(); + if (response.length() != 0) { + try { + String status = response.getString("status"); + if ("on".equals(status)) { + sp.edit().putBoolean("isShow", true).apply(); + } else { + sp.edit().putBoolean("isShow", false).apply(); + } + EventBus.getDefault().post(new EBReuse("Refresh")); + } catch (JSONException e) { + e.printStackTrace(); } - EventBus.getDefault().post(new EBReuse("Refresh")); - } catch (JSONException e) { - e.printStackTrace(); } } }, null); diff --git a/app/src/main/java/com/gh/gamecenter/SuggestionActivity.java b/app/src/main/java/com/gh/gamecenter/SuggestionActivity.java index d8cb202d78..8d2bef6caf 100644 --- a/app/src/main/java/com/gh/gamecenter/SuggestionActivity.java +++ b/app/src/main/java/com/gh/gamecenter/SuggestionActivity.java @@ -194,19 +194,23 @@ public class SuggestionActivity extends BaseActivity implements OnClickListener Config.HOST + "support/suggestion", new JSONObject(map), new Response.Listener() { @Override - public void onResponse(JSONObject object) { + public void onResponse(JSONObject response) { isShowing = false; dialog.dismiss(); - try { - if ("ok".equals(object.getString("status"))) { - toast("提交成功,感谢您的反馈!"); - finish(); - } else { - toast("提交失败,请稍后尝试!"); + if (response.length() != 0) { + try { + if ("ok".equals(response.getString("status"))) { + toast("提交成功,感谢您的反馈!"); + finish(); + } else { + toast("提交失败,请稍后尝试!"); + } + } catch (JSONException e) { + e.printStackTrace(); } - } catch (JSONException e) { - e.printStackTrace(); + } else { + toast("提交失败,请稍后尝试!"); } } diff --git a/app/src/main/java/com/gh/gamecenter/ViewImageActivity.java b/app/src/main/java/com/gh/gamecenter/ViewImageActivity.java index d6673bc71e..698b645600 100644 --- a/app/src/main/java/com/gh/gamecenter/ViewImageActivity.java +++ b/app/src/main/java/com/gh/gamecenter/ViewImageActivity.java @@ -237,12 +237,7 @@ public class ViewImageActivity extends BaseActivity implements connection.setReadTimeout(5 * 1000); connection.connect(); int code = connection.getResponseCode(); - if (code == 200) { - //图片存在 - if (urls == null) { - return; - } - //urls出现空指针 + if (code == 200 && urls != null) { for (int i = 0, size = urls.size(); i < size; i++) { if (urls.get(i).equals(url)) { newUrls.put(i, newUrl); diff --git a/app/src/main/java/com/gh/gamecenter/adapter/ConcernAdapter.java b/app/src/main/java/com/gh/gamecenter/adapter/ConcernAdapter.java index e4c34b936f..b60066669e 100644 --- a/app/src/main/java/com/gh/gamecenter/adapter/ConcernAdapter.java +++ b/app/src/main/java/com/gh/gamecenter/adapter/ConcernAdapter.java @@ -75,8 +75,10 @@ public class ConcernAdapter extends RecyclerView.Adapter { new Response.Listener() { @Override public void onResponse(JSONObject response) { + if (response.length() != 0) { + result.add(response); + } addConcernCount(); - result.add(response); if (cCount == count) { processingConcernGame(result); } diff --git a/app/src/main/java/com/gh/gamecenter/adapter/ConcernRecommendAdapter.java b/app/src/main/java/com/gh/gamecenter/adapter/ConcernRecommendAdapter.java index 4de296edb0..e4aba641a5 100644 --- a/app/src/main/java/com/gh/gamecenter/adapter/ConcernRecommendAdapter.java +++ b/app/src/main/java/com/gh/gamecenter/adapter/ConcernRecommendAdapter.java @@ -77,9 +77,13 @@ public class ConcernRecommendAdapter extends RecyclerView.Adapter() { @Override public void onResponse(JSONObject response) { - Gson gson = new Gson(); - GameEntity gameEntity = gson.fromJson(response.toString(), GameEntity.class); - gameList.add(gameEntity); + if (response.length() != 0) { + Gson gson = new Gson(); + GameEntity gameEntity = gson.fromJson(response.toString(), GameEntity.class); + if (gameEntity.isNewsExists()) { + gameList.add(gameEntity); + } + } addCount(); if (count == size) { initRecommendGame(); diff --git a/app/src/main/java/com/gh/gamecenter/adapter/ImagePagerAdapter.java b/app/src/main/java/com/gh/gamecenter/adapter/ImagePagerAdapter.java index e679055fa3..cb76b0bda1 100644 --- a/app/src/main/java/com/gh/gamecenter/adapter/ImagePagerAdapter.java +++ b/app/src/main/java/com/gh/gamecenter/adapter/ImagePagerAdapter.java @@ -94,14 +94,14 @@ public class ImagePagerAdapter extends RecyclingPagerAdapter { DataUtils.onEvent(context, "点击", "游戏-插件-滚动图", kv); if ("game".equals(slideEntity.getType())) { - GameUtils.startGameDetailActivity(context, slideEntity.getLink(), "游戏-插件-滚动图"); + GameUtils.startGameDetailActivity(context, slideEntity.getLink(), "(游戏-插件:滚动图)"); } else if ("news".equals(slideEntity.getType())) { // 统计阅读量 NewsUtils.statNewsViews(slideEntity.getLink()); Intent intent = new Intent(context, NewsDetailActivity.class); intent.putExtra("newsId", slideEntity.getLink()); - intent.putExtra("entrance", "游戏-插件-滚动图"); + intent.putExtra("entrance", "(游戏-插件:滚动图)"); context.startActivity(intent); } else if ("column".equals(slideEntity.getType())) { Intent intent = new Intent(context, SubjectActivity.class); diff --git a/app/src/main/java/com/gh/gamecenter/adapter/SubjectAdapter.java b/app/src/main/java/com/gh/gamecenter/adapter/SubjectAdapter.java index 5ce050c787..2b3ee5c194 100644 --- a/app/src/main/java/com/gh/gamecenter/adapter/SubjectAdapter.java +++ b/app/src/main/java/com/gh/gamecenter/adapter/SubjectAdapter.java @@ -318,7 +318,7 @@ public class SubjectAdapter extends RecyclerView.Adapter articleTypes; @SerializedName("share_code") private String shareCode; + @SerializedName("download_off_text") + private String downloadOffText; + + public void setDownloadOffText(String downloadOffText) { + this.downloadOffText = downloadOffText; + } + + public String getDownloadOffText() { + return downloadOffText; + } public ArrayList getArticleTypes() { return articleTypes; diff --git a/app/src/main/java/com/gh/gamecenter/entity/GameEntity.java b/app/src/main/java/com/gh/gamecenter/entity/GameEntity.java index eb65261ee7..d69cbb21fc 100644 --- a/app/src/main/java/com/gh/gamecenter/entity/GameEntity.java +++ b/app/src/main/java/com/gh/gamecenter/entity/GameEntity.java @@ -42,14 +42,25 @@ public class GameEntity { private String link; @SerializedName("concern_article_exists") - private boolean exists = true; + private boolean newsExists = true; - public boolean isExists() { - return exists; + @SerializedName("download_off_text") + private String downloadOffText; + + public void setDownloadOffText(String downloadOffText) { + this.downloadOffText = downloadOffText; } - public void setExists(boolean exists) { - this.exists = exists; + public String getDownloadOffText() { + return downloadOffText; + } + + public boolean isNewsExists() { + return newsExists; + } + + public void setNewsExists(boolean newsExists) { + this.newsExists = newsExists; } public String getLink() { @@ -181,15 +192,27 @@ public class GameEntity { gameEntity.setIcon(icon); gameEntity.setName(name); gameEntity.setBrief(brief); - gameEntity.setTag(new ArrayList<>(tag)); - gameEntity.setApk(new ArrayList<>(apk)); + if (tag != null) { + gameEntity.setTag(new ArrayList<>(tag)); + } + if (apk != null) { + gameEntity.setApk(new ArrayList<>(apk)); + } + if (collection != null) { + gameEntity.setCollection(new ArrayList<>(collection)); + } gameEntity.setSlide(slide); gameEntity.setTest(test); gameEntity.setDownloadAddWord(downloadAddWord); - gameEntity.setEntryMap(new ArrayMap(entryMap)); + if (entryMap != null) { + gameEntity.setEntryMap(new ArrayMap(entryMap)); + } gameEntity.setImage(image); gameEntity.setType(type); gameEntity.setPluggable(isPluggable); + gameEntity.setLink(link); + gameEntity.setNewsExists(newsExists); + gameEntity.setDownloadOffText(downloadOffText); return gameEntity; } diff --git a/app/src/main/java/com/gh/gamecenter/game/Game1Fragment.java b/app/src/main/java/com/gh/gamecenter/game/Game1Fragment.java index 094479f3c6..c2fc19f537 100644 --- a/app/src/main/java/com/gh/gamecenter/game/Game1Fragment.java +++ b/app/src/main/java/com/gh/gamecenter/game/Game1Fragment.java @@ -25,7 +25,6 @@ import com.gh.gamecenter.eventbus.EBNetworkState; import com.gh.gamecenter.eventbus.EBPackage; import com.gh.gamecenter.eventbus.EBReuse; import com.gh.gamecenter.eventbus.EBUISwitch; -import com.gh.gamecenter.manager.PackageManager; import java.util.ArrayList; import java.util.List; @@ -159,7 +158,7 @@ public class Game1Fragment extends BaseFragment implements SwipeRefreshLayout.On // 插件化列表 if ("安装".equals(busFour.getType()) || "卸载".equals(busFour.getType())) { List list = adapter.getPluginList(); - for (int i = 0, size = list.size(); i < size; i++) { + for (int i = 0; i < list.size(); i++) { if (list.get(i).getApk().get(0).getPackageName().equals(busFour.getPackageName())) { if ("卸载".equals(busFour.getType()) && DownloadManager.getInstance(getActivity()).get( diff --git a/app/src/main/java/com/gh/gamecenter/game/Game1FragmentAdapter.java b/app/src/main/java/com/gh/gamecenter/game/Game1FragmentAdapter.java index 22adf94db3..b60f54faae 100644 --- a/app/src/main/java/com/gh/gamecenter/game/Game1FragmentAdapter.java +++ b/app/src/main/java/com/gh/gamecenter/game/Game1FragmentAdapter.java @@ -199,6 +199,7 @@ public class Game1FragmentAdapter extends RecyclerView.Adapter() { @Override public void onResponse(JSONArray response) { - Type listType = new TypeToken>() {}.getType(); Gson gson = new Gson(); List list = gson.fromJson(response.toString(), listType); @@ -102,6 +101,7 @@ public class Game2FragmentAdapter extends RecyclerView.Adapter= offset && position <= subjectList.get(i).getData().size() + offset) { - int index = position -offset-1; + int index = position - offset - 1; if (index < 0) { index = 0; } gameEntity = subjectList.get(i).getData().get(index); - if (position == offset && !TextUtils.isEmpty(gameEntity.getImage())){ + if (position == offset && !TextUtils.isEmpty(gameEntity.getImage())) { return ItemViewType.GAME_IMAGE; - }else if (position == offset){ + } else if (position == offset) { return ItemViewType.COLUMN_HEADER; } - if (position == offset+1 && !TextUtils.isEmpty(subjectList.get(i).getData().get(0).getImage())) { + if (position == offset + 1 && !TextUtils.isEmpty(subjectList.get(i).getData().get(0).getImage())) { return ItemViewType.COLUMN_HEADER; } if (gameEntity.getTest() != null) { @@ -335,7 +335,7 @@ public class Game2FragmentAdapter extends RecyclerView.Adapter offset && position <= subjectList.get(i).getData().size() + offset) { - int index = position -offset-1; + int index = position - offset - 1; if (index<0){ index = 0; } diff --git a/app/src/main/java/com/gh/gamecenter/game/Game3FragmentAdapter.java b/app/src/main/java/com/gh/gamecenter/game/Game3FragmentAdapter.java index 4a195bf923..6d5c40d4cf 100644 --- a/app/src/main/java/com/gh/gamecenter/game/Game3FragmentAdapter.java +++ b/app/src/main/java/com/gh/gamecenter/game/Game3FragmentAdapter.java @@ -97,7 +97,6 @@ public class Game3FragmentAdapter extends RecyclerView.Adapter() { - @Override public void onResponse(JSONArray response) { processingData(response, offset); @@ -105,7 +104,6 @@ public class Game3FragmentAdapter extends RecyclerView.Adapter() { @Override public void onResponse(JSONObject response) { - Gson gson = new Gson(); - gameDetailEntity = gson.fromJson(response.toString(), GameDetailEntity.class); + if (response.length() != 0) { + Gson gson = new Gson(); + gameDetailEntity = gson.fromJson(response.toString(), GameDetailEntity.class); - getGameNews(); + getGameNews(); - getNewsServer(); + getNewsServer(); + } else if (listener != null) { + listener.loadError(); + } } }, new Response.ErrorListener() { @Override @@ -159,51 +163,49 @@ public class GameDetailAdapter extends RecyclerView.Adapter { new Response.Listener() { @Override public void onResponse(JSONArray response) { - if (response.length() != 0) { - try { - ArrayList serverInfo = new ArrayList<>(); - SimpleDateFormat format = new SimpleDateFormat( - "Mdd", Locale.getDefault()); - int today = Integer.valueOf(format.format(new Date())); - for (int j = 0, sizej = response.length(); j < sizej; j++) { - ServerEntity entity = new ServerEntity(); - JSONObject jsonObject2; - jsonObject2 = response.getJSONObject(j); - String server = jsonObject2.getString("server"); - if (server.length() > 4) { - server = server.substring(0, 4); - } - entity.setServer(server); - entity.setTime(Long.valueOf(jsonObject2.getString("time") + "000")); - int day = Integer.valueOf(format.format(new Date(entity.getTime()))); - if (day == today + 1) { - entity.setTag("明天"); - serverInfo.add(entity); - } else if (day == today - 1) { - entity.setTag("昨天"); - serverInfo.add(entity); - } else if (day == today) { - entity.setTag("今天"); - serverInfo.add(entity); - } + try { + ArrayList serverInfo = new ArrayList<>(); + SimpleDateFormat format = new SimpleDateFormat( + "Mdd", Locale.getDefault()); + int today = Integer.valueOf(format.format(new Date())); + for (int i = 0, size = response.length(); i < size; i++) { + ServerEntity entity = new ServerEntity(); + JSONObject jsonObject2; + jsonObject2 = response.getJSONObject(i); + String server = jsonObject2.getString("server"); + if (server.length() > 4) { + server = server.substring(0, 4); } - - Comparator comparator = new Comparator() { - @Override - public int compare(ServerEntity lhs, ServerEntity rhs) { - return (int) (lhs.getTime() - rhs.getTime()); - } - }; - Collections.sort(serverInfo, comparator); - - gameDetailEntity.setServerInfo(serverInfo); - initPosition(); - if (position_newsserver != -1) { - notifyItemInserted(position_newsserver); + entity.setServer(server); + entity.setTime(Long.valueOf(jsonObject2.getString("time") + "000")); + int day = Integer.valueOf(format.format(new Date(entity.getTime()))); + if (day == today + 1) { + entity.setTag("明天"); + serverInfo.add(entity); + } else if (day == today - 1) { + entity.setTag("昨天"); + serverInfo.add(entity); + } else if (day == today) { + entity.setTag("今天"); + serverInfo.add(entity); } - } catch (JSONException e) { - e.printStackTrace(); } + + Comparator comparator = new Comparator() { + @Override + public int compare(ServerEntity lhs, ServerEntity rhs) { + return (int) (lhs.getTime() - rhs.getTime()); + } + }; + Collections.sort(serverInfo, comparator); + + gameDetailEntity.setServerInfo(serverInfo); + initPosition(); + if (position_newsserver != -1) { + notifyItemInserted(position_newsserver); + } + } catch (JSONException e) { + e.printStackTrace(); } } }, null); diff --git a/app/src/main/java/com/gh/gamecenter/manager/DataCollectionManager.java b/app/src/main/java/com/gh/gamecenter/manager/DataCollectionManager.java index f0419259a9..3875eb6a66 100644 --- a/app/src/main/java/com/gh/gamecenter/manager/DataCollectionManager.java +++ b/app/src/main/java/com/gh/gamecenter/manager/DataCollectionManager.java @@ -247,7 +247,6 @@ public class DataCollectionManager { @Override public void onResponse(JSONObject response) { isUploading = false; - Utils.log(response); try { if ("success".equals(response.getString("status"))) { // 上传成功,删除本地数据 @@ -262,7 +261,6 @@ public class DataCollectionManager { public void onErrorResponse(VolleyError error) { isUploading = false; // 上传失败,检查网络状态,继续上传 - Utils.log(error); if (error.networkResponse != null) { Utils.log(new String(error.networkResponse.data)); } diff --git a/app/src/main/java/com/gh/gamecenter/manager/FilterManager.java b/app/src/main/java/com/gh/gamecenter/manager/FilterManager.java index dbe2b14d3f..4ca4aff30a 100644 --- a/app/src/main/java/com/gh/gamecenter/manager/FilterManager.java +++ b/app/src/main/java/com/gh/gamecenter/manager/FilterManager.java @@ -7,7 +7,6 @@ import com.android.volley.Request; import com.android.volley.Response; import com.gh.base.AppController; import com.gh.common.constant.Config; -import com.gh.common.util.Utils; import com.gh.gamecenter.db.FilterDao; import com.gh.gamecenter.db.info.FilterInfo; import com.gh.gamecenter.volley.extended.JsonArrayExtendedRequest; @@ -56,11 +55,8 @@ public class FilterManager { new Response.Listener() { @Override public void onResponse(JSONArray response) { - - Utils.log("getFilterFromServer=" + response.toString()); - try { - List list = new ArrayList(); + List list = new ArrayList<>(); for (int i = 0, size = response.length(); i < size; i++) { list.add(new FilterInfo(response.getString(i))); } diff --git a/app/src/main/java/com/gh/gamecenter/news/News1FragmentAdapter.java b/app/src/main/java/com/gh/gamecenter/news/News1FragmentAdapter.java index b1ba659278..2f9d66fd1c 100644 --- a/app/src/main/java/com/gh/gamecenter/news/News1FragmentAdapter.java +++ b/app/src/main/java/com/gh/gamecenter/news/News1FragmentAdapter.java @@ -182,7 +182,6 @@ public class News1FragmentAdapter extends RecyclerView.Adapter() { @Override public void onResponse(JSONArray response) { - Utils.log("response = " + response); try { JSONObject jsonObject; for (int i = 0, size = response.length(); i < size; i++) { diff --git a/app/src/main/java/com/gh/gamecenter/news/News2FragmentAdapter.java b/app/src/main/java/com/gh/gamecenter/news/News2FragmentAdapter.java index d24c6c1ad9..40021dceb5 100644 --- a/app/src/main/java/com/gh/gamecenter/news/News2FragmentAdapter.java +++ b/app/src/main/java/com/gh/gamecenter/news/News2FragmentAdapter.java @@ -183,7 +183,6 @@ public class News2FragmentAdapter extends RecyclerView.Adapter() { @Override public void onResponse(JSONArray response) { - Utils.log("response = " + response); try { JSONObject jsonObject; for (int i = 0, size = response.length(); i < size; i++) { @@ -453,7 +452,7 @@ public class News2FragmentAdapter extends RecyclerView.Adapter() { - @Override public void onResponse(JSONArray response) { - Type listType = new TypeToken>() {}.getType(); Gson gson = new Gson(); List list = gson.fromJson(response.toString(), listType); @@ -187,7 +185,6 @@ public class News3FragmentAdapter extends RecyclerView.Adapter() { @Override public void onResponse(JSONObject response) { - if (response.length() != 0){ + if (response.length() != 0) { Gson gson = new Gson(); GameEntity gameEntity = gson.fromJson(response.toString(), GameEntity.class); - if (finalI == size - 1){ + if (finalI == size - 1) { recommendGameList.add(gameEntity); - }else if (gameEntity.isExists()){ + } else if (gameEntity.isNewsExists()) { installGameList.add(gameEntity); } } @@ -386,10 +386,10 @@ public class News4Fragment extends BaseFragment implements SwipeRefreshLayout.On //自由排序 if (recommendGameList.size() < 4){ for (GameEntity gameEntity : installGameList) { - if (recommendGameList.size() >= 4 || concernManager.isConcern(gameEntity.getId())){ - continue; + if (recommendGameList.size() < 4 + && !concernManager.isConcern(gameEntity.getId())) { + recommendGameList.add(gameEntity); } - recommendGameList.add(gameEntity); } } diff --git a/app/src/main/java/com/gh/gamecenter/news/News4FragmentAdapter.java b/app/src/main/java/com/gh/gamecenter/news/News4FragmentAdapter.java index 75d24bf7fd..ad6abc0b81 100644 --- a/app/src/main/java/com/gh/gamecenter/news/News4FragmentAdapter.java +++ b/app/src/main/java/com/gh/gamecenter/news/News4FragmentAdapter.java @@ -46,13 +46,13 @@ import com.gh.gamecenter.volley.extended.JsonObjectExtendedRequest; import com.google.gson.Gson; import com.google.gson.reflect.TypeToken; -import org.apache.http.HttpStatus; import org.json.JSONArray; import org.json.JSONException; import org.json.JSONObject; import java.io.File; import java.lang.reflect.Type; +import java.net.HttpURLConnection; import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.ArrayList; @@ -152,6 +152,7 @@ public class News4FragmentAdapter extends RecyclerView.Adapter>() {}.getType(); Gson gson = new Gson(); List list = gson.fromJson(response.toString(), listType); @@ -185,7 +186,7 @@ public class News4FragmentAdapter extends RecyclerView.Adapter>() {}.getType(); Gson gson = new Gson(); List list = gson.fromJson(response.toString(), listType); @@ -328,7 +330,6 @@ public class News4FragmentAdapter extends RecyclerView.Adapter() { @Override public void onResponse(JSONArray response) { - Utils.log("response = " + response); try { JSONObject jsonObject; for (int i = 0, size = response.length(); i < size; i++) { diff --git a/app/src/main/java/com/gh/gamecenter/newsdetail/NewsDetailAdapter.java b/app/src/main/java/com/gh/gamecenter/newsdetail/NewsDetailAdapter.java index f0d8477578..e9ee5339d0 100644 --- a/app/src/main/java/com/gh/gamecenter/newsdetail/NewsDetailAdapter.java +++ b/app/src/main/java/com/gh/gamecenter/newsdetail/NewsDetailAdapter.java @@ -105,7 +105,6 @@ public class NewsDetailAdapter extends RecyclerView.Adapter { listener.loadError(); } } - }, new Response.ErrorListener() { @Override public void onErrorResponse(VolleyError error) { @@ -136,7 +135,7 @@ public class NewsDetailAdapter extends RecyclerView.Adapter { } } List more = new ArrayList<>(); - // TODO 随机三篇文章 + // 随机三篇文章 int[] index = RandomUtils.getRandomArray(list.size() > 3 ? 3 : list.size(), list.size()); for (int i : index) { more.add(list.get(i)); diff --git a/app/src/main/java/com/gh/gamecenter/personal/ConcernFragmentAdapter.java b/app/src/main/java/com/gh/gamecenter/personal/ConcernFragmentAdapter.java index 585a669ccf..0ebdd1d80d 100644 --- a/app/src/main/java/com/gh/gamecenter/personal/ConcernFragmentAdapter.java +++ b/app/src/main/java/com/gh/gamecenter/personal/ConcernFragmentAdapter.java @@ -93,7 +93,9 @@ public class ConcernFragmentAdapter extends RecyclerView.Adapter() { @Override public void onResponse(JSONObject response) { - result.add(response); + if (response.length() != 0) { + result.add(response); + } addCount(); if (count == size) { processingConcernGame(result); diff --git a/app/src/main/java/com/gh/gamecenter/personal/InstallFragmentAdapter.java b/app/src/main/java/com/gh/gamecenter/personal/InstallFragmentAdapter.java index 4317820075..86083bc5fb 100644 --- a/app/src/main/java/com/gh/gamecenter/personal/InstallFragmentAdapter.java +++ b/app/src/main/java/com/gh/gamecenter/personal/InstallFragmentAdapter.java @@ -225,7 +225,9 @@ public class InstallFragmentAdapter extends RecyclerView.Adapter() { @Override public void onResponse(JSONObject response) { - result.add(response); + if (response.length() != 0) { + result.add(response); + } addCount(); if (count == size) { processingData(result); @@ -308,7 +310,6 @@ public class InstallFragmentAdapter extends RecyclerView.Adapter list; for (int i = 0; i < gameList.size(); i++) { gameEntity = gameList.get(i); - // TODO ERROR IndexOutOfBoundsException InstallFragmentAdapter initLocationMap 290 if (gameEntity.getApk() != null && gameEntity.getApk().size() != 0) { for (ApkEntity apkEntity : gameEntity.getApk()) { list = locationMap.get(apkEntity.getPackageName()); 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 8ee867d9a0..6e6dbf9da3 100644 --- a/app/src/main/java/com/gh/gamecenter/personal/PersonalFragment.java +++ b/app/src/main/java/com/gh/gamecenter/personal/PersonalFragment.java @@ -52,10 +52,10 @@ import com.gh.gamecenter.manager.DataCollectionManager; import com.gh.gamecenter.volley.extended.StringExtendedRequest; import com.tencent.stat.StatConfig; -import org.apache.http.HttpStatus; import org.json.JSONException; import org.json.JSONObject; +import java.net.HttpURLConnection; import java.util.HashMap; import java.util.Map; @@ -294,7 +294,6 @@ public class PersonalFragment extends Fragment implements View.OnClickListener, super.onActivityResult(requestCode, resultCode, data); if (requestCode == 0x123 && data != null) { Uri selectedImage = data.getData(); - // TODO 华为手机选择图片后有自带预览,如在预览时取消,getData()返回为null if (selectedImage == null) { return; } @@ -425,7 +424,7 @@ public class PersonalFragment extends Fragment implements View.OnClickListener, public void onErrorResponse(VolleyError error) { waitDialog.dismiss(); if (error.networkResponse != null - && error.networkResponse.statusCode == HttpStatus.SC_FORBIDDEN) { + && error.networkResponse.statusCode == HttpURLConnection.HTTP_FORBIDDEN) { try { JSONObject response = new JSONObject(new String(error.networkResponse.data)); String detail = response.getString("detail"); diff --git a/app/src/main/java/com/gh/gamecenter/search/SearchGameListFragmentAdapter.java b/app/src/main/java/com/gh/gamecenter/search/SearchGameListFragmentAdapter.java index 77b9b90038..28d3acfe71 100644 --- a/app/src/main/java/com/gh/gamecenter/search/SearchGameListFragmentAdapter.java +++ b/app/src/main/java/com/gh/gamecenter/search/SearchGameListFragmentAdapter.java @@ -86,6 +86,7 @@ public class SearchGameListFragmentAdapter extends RecyclerView.Adapter>() {}.getType(); Gson gson = new Gson(); List list = gson.fromJson(response.toString(), listType); diff --git a/app/src/main/java/com/gh/gamecenter/volley/extended/ExtendedRequest.java b/app/src/main/java/com/gh/gamecenter/volley/extended/ExtendedRequest.java index e17f58d01a..dcf6c8bcbd 100644 --- a/app/src/main/java/com/gh/gamecenter/volley/extended/ExtendedRequest.java +++ b/app/src/main/java/com/gh/gamecenter/volley/extended/ExtendedRequest.java @@ -12,10 +12,9 @@ import com.gh.common.util.GzipUtils; import com.gh.common.util.TimestampUtils; import com.gh.common.util.Utils; -import org.apache.http.HttpStatus; - import java.io.IOException; import java.io.UnsupportedEncodingException; +import java.net.HttpURLConnection; import java.util.HashMap; import java.util.Map; @@ -65,9 +64,9 @@ public abstract class ExtendedRequest extends Request { String responseString = null; String charset = HttpHeaderParser.parseCharset(response.headers); - if (HttpStatus.SC_NOT_MODIFIED == response.statusCode + if (HttpURLConnection.HTTP_NOT_MODIFIED == response.statusCode || (mGzipEnabled && isGzipped(response.headers)) - || HttpStatus.SC_OK == response.statusCode) { + || HttpURLConnection.HTTP_OK == response.statusCode) { try { byte[] data = GzipUtils.decompressBytes(response.data); responseString = new String(data, charset); diff --git a/app/src/main/res/layout/viewimage_gif_item.xml b/app/src/main/res/layout/viewimage_gif_item.xml deleted file mode 100644 index 10eac33703..0000000000 --- a/app/src/main/res/layout/viewimage_gif_item.xml +++ /dev/null @@ -1,20 +0,0 @@ - - - - - - - - \ No newline at end of file