From 5b9bef79da219d36d301ba88c09410a7eb4ac0ea Mon Sep 17 00:00:00 2001 From: chenjuntao Date: Mon, 13 Jul 2020 16:01:11 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E5=A4=8D=E4=B8=80=E4=BA=9B=E9=97=AA?= =?UTF-8?q?=E9=80=80=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/com/gh/common/util/ShareUtils.java | 36 +-- .../gh/common/videolog/VideoRecordUtils.kt | 2 +- .../com/gh/common/view/ExpandTextView.java | 2 + .../gh/gamecenter/NetworkDiagnosisActivity.kt | 218 +++++++++--------- 4 files changed, 134 insertions(+), 124 deletions(-) diff --git a/app/src/main/java/com/gh/common/util/ShareUtils.java b/app/src/main/java/com/gh/common/util/ShareUtils.java index 66483ba2cd..7c3aa46516 100644 --- a/app/src/main/java/com/gh/common/util/ShareUtils.java +++ b/app/src/main/java/com/gh/common/util/ShareUtils.java @@ -24,6 +24,9 @@ import android.widget.PopupWindow; import android.widget.RelativeLayout; import android.widget.TextView; +import androidx.recyclerview.widget.GridLayoutManager; +import androidx.recyclerview.widget.RecyclerView; + import com.facebook.common.references.CloseableReference; import com.facebook.datasource.DataSource; import com.facebook.imagepipeline.datasource.BaseBitmapDataSubscriber; @@ -54,9 +57,6 @@ import java.lang.ref.WeakReference; import java.util.ArrayList; import java.util.List; -import androidx.recyclerview.widget.GridLayoutManager; -import androidx.recyclerview.widget.RecyclerView; - import static com.gh.common.util.LoginHelper.WEIBO_SCOPE; /** @@ -247,17 +247,17 @@ public class ShareUtils { e.printStackTrace(); } - contentView.setOnClickListener(v -> popupWindow.get().dismiss()); + contentView.setOnClickListener(v -> safelyDismiss()); contentView.setOnKeyListener((v, keyCode, event) -> { if (keyCode == KeyEvent.KEYCODE_BACK && event.getRepeatCount() == 0 - && popupWindow != null + && popupWindow.get() != null && popupWindow.get().isShowing()) { if (callBack != null) { callBack.onCancel(); } - popupWindow.get().dismiss(); + safelyDismiss(); } return false; }); @@ -298,7 +298,7 @@ public class ShareUtils { } if (mShareEntrance != ShareEntrance.shareGh) { - popupWindow.get().dismiss(); + safelyDismiss(); } } @@ -338,7 +338,7 @@ public class ShareUtils { loadBitMap(shareIcon, msg, req); if (mShareEntrance != ShareEntrance.shareGh) { - popupWindow.get().dismiss(); + safelyDismiss(); } } @@ -454,7 +454,7 @@ public class ShareUtils { } if (mShareEntrance != ShareEntrance.shareGh) { - popupWindow.get().dismiss(); + safelyDismiss(); } } @@ -499,7 +499,7 @@ public class ShareUtils { loadBitMap(shareIcon, msg, req); if (mShareEntrance != ShareEntrance.shareGh) { - popupWindow.get().dismiss(); + safelyDismiss(); } } @@ -520,7 +520,7 @@ public class ShareUtils { if (mShareEntrance != ShareEntrance.shareGh) { - popupWindow.get().dismiss(); + safelyDismiss(); } } @@ -562,8 +562,8 @@ public class ShareUtils { e.printStackTrace(); } - if (mShareEntrance != ShareEntrance.shareGh) { - popupWindow.get().dismiss(); + if (mShareEntrance != ShareEntrance.shareGh ) { + safelyDismiss(); } } @@ -575,7 +575,7 @@ public class ShareUtils { cmb.setText(copyContent); if (mShareEntrance != ShareEntrance.shareGh) { Utils.toast(mContext, "复制成功"); - popupWindow.get().dismiss(); + safelyDismiss(); } else { Utils.toast(mContext, "复制成功,请到微信/QQ粘贴分享"); } @@ -661,7 +661,7 @@ public class ShareUtils { break; case 7: if (mShareEntrance != ShareEntrance.shareGh) { - popupWindow.get().dismiss(); + safelyDismiss(); } else { shareType = "copy_link"; LogUtils.uploadShareType(shareType, shareEntrance.getName(), shareUrl, mTitle, mSummary, resourceId); @@ -689,6 +689,12 @@ public class ShareUtils { } } } + + private void safelyDismiss() { + if (popupWindow.get() != null) { + popupWindow.get().dismiss(); + } + } interface OnItemClickListener { void onItemClick(int position); diff --git a/app/src/main/java/com/gh/common/videolog/VideoRecordUtils.kt b/app/src/main/java/com/gh/common/videolog/VideoRecordUtils.kt index 6b398b7d94..31570a0cb6 100644 --- a/app/src/main/java/com/gh/common/videolog/VideoRecordUtils.kt +++ b/app/src/main/java/com/gh/common/videolog/VideoRecordUtils.kt @@ -61,7 +61,7 @@ object VideoRecordUtils { if (!UserManager.getInstance().isLoggedIn) return val requestMap = HashMap() val videoIds = videoRecordSet.toList().map { it.videoId } - requestMap["g_id"] = HaloApp.getInstance().gid + requestMap["g_id"] = HaloApp.getInstance().gid ?: "" requestMap["time"] = time requestMap["video_id"] = videoIds RetrofitManager.getInstance(HaloApp.getInstance().application).api diff --git a/app/src/main/java/com/gh/common/view/ExpandTextView.java b/app/src/main/java/com/gh/common/view/ExpandTextView.java index 91de758c86..0fa2b85bb4 100644 --- a/app/src/main/java/com/gh/common/view/ExpandTextView.java +++ b/app/src/main/java/com/gh/common/view/ExpandTextView.java @@ -194,6 +194,8 @@ public class ExpandTextView extends AppCompatTextView { msp.replace(expandTextStartPosition, length, finalEndText + mExpandText); + if (expandTextStartPosition + mEndText.length() >= msp.length()) return; + msp.setSpan(new ClickableSpan() { @Override public void updateDrawState(@NonNull TextPaint ds) { diff --git a/app/src/main/java/com/gh/gamecenter/NetworkDiagnosisActivity.kt b/app/src/main/java/com/gh/gamecenter/NetworkDiagnosisActivity.kt index 9d47533654..352112968e 100644 --- a/app/src/main/java/com/gh/gamecenter/NetworkDiagnosisActivity.kt +++ b/app/src/main/java/com/gh/gamecenter/NetworkDiagnosisActivity.kt @@ -17,11 +17,11 @@ import android.webkit.WebView import android.webkit.WebViewClient import android.widget.ScrollView import android.widget.TextView -import com.gh.base.BaseActivity import com.gh.base.ToolBarActivity import com.gh.common.util.CommentUtils import com.gh.common.util.DeviceUtils import com.gh.common.util.DialogUtils +import com.gh.common.util.tryCatchInRelease import com.gh.gamecenter.retrofit.Response import io.reactivex.Observable import io.reactivex.ObservableOnSubscribe @@ -67,85 +67,85 @@ class NetworkDiagnosisActivity : ToolBarActivity() { Observable.create(ObservableOnSubscribe { - var progress = 0 + var progress = 0 - // 1.获取当前网络情况,network/ip/mac/sim + // 1.获取当前网络情况,network/ip/mac/sim - // Network 2G/3G/4G/WIFI - builder.append("Network:") - builder.append(DeviceUtils.getNetwork(applicationContext)) + // Network 2G/3G/4G/WIFI + builder.append("Network:") + builder.append(DeviceUtils.getNetwork(applicationContext)) + builder.append("\n") + + progress += 3 + it.onNext(ProgressAndDetail(progress, builder.toString())) + + // IP + builder.append("IP:") + builder.append(DeviceUtils.getIPAddress(applicationContext)) + builder.append("\n") + + progress += 3 + it.onNext(ProgressAndDetail(progress, builder.toString())) + + // MAC + builder.append("MAC:") + builder.append(DeviceUtils.getMac(applicationContext)) + builder.append("\n") + + progress += 3 + it.onNext(ProgressAndDetail(progress, builder.toString())) + + // SIM + builder.append("SIM:") + builder.append(DeviceUtils.getSim(applicationContext)) + builder.append("\n") + + progress += 3 + it.onNext(ProgressAndDetail(progress, builder.toString())) + + builder.append("-----------------------------------------------------------------------\n") + + // 2.ping域名 + val domains = arrayOf("api.ghzs.com", "download.ghzs.com", "apk.ghzs666.com", "image.ghzs666.com", "image.ghzhushou.com") + for (domain in domains) { + builder.append(DeviceUtils.ping(domain)) + builder.append("-----------------------------------------------------------------------\n") + progress += 7 + it.onNext(ProgressAndDetail(progress, builder.toString())) + } + + // 3.okhttp访问链接 + val urls = arrayOf("https://api.ghzs.com/v3d3/index/columns", "https://download.ghzs.com/game?id=55097638fc1a6fa45f8b4568&platform=9u", "https://apk.ghzs666.com/packed/5af00abc02b30f7c038b456c.apk", "http://image.ghzs666.com/pic/5b29b3c92924bcaf5d438d38.jpg", "http://image.ghzhushou.com/pic/586cad378ab49e0f1b91b3e8.png") + for (url in urls) { + builder.append("Url:") + builder.append(url) + builder.append("\n") + + val client = OkHttpClient() + val request = Request.Builder() + .head() + .url(url) + .build() + try { + val response = client.newCall(request).execute() + builder.append("Success:\n") + builder.append("Response:\n") + builder.append(response.toString()) builder.append("\n") - - progress += 3 - it.onNext(ProgressAndDetail(progress, builder.toString())) - - // IP - builder.append("IP:") - builder.append(DeviceUtils.getIPAddress(applicationContext)) + builder.append("Response Header:\n") + builder.append(response.headers().toString()) builder.append("\n") + } catch (e: IOException) { + builder.append("Error:\n") + builder.append(Log.getStackTraceString(e)) + } + builder.append("-----------------------------------------------------------------------\n") + progress += 7 + it.onNext(ProgressAndDetail(progress, builder.toString())) + } - progress += 3 - it.onNext(ProgressAndDetail(progress, builder.toString())) - - // MAC - builder.append("MAC:") - builder.append(DeviceUtils.getMac(applicationContext)) - builder.append("\n") - - progress += 3 - it.onNext(ProgressAndDetail(progress, builder.toString())) - - // SIM - builder.append("SIM:") - builder.append(DeviceUtils.getSim(applicationContext)) - builder.append("\n") - - progress += 3 - it.onNext(ProgressAndDetail(progress, builder.toString())) - - builder.append("-----------------------------------------------------------------------\n") - - // 2.ping域名 - val domains = arrayOf("api.ghzs.com", "download.ghzs.com", "apk.ghzs666.com", "image.ghzs666.com", "image.ghzhushou.com") - for (domain in domains) { - builder.append(DeviceUtils.ping(domain)) - builder.append("-----------------------------------------------------------------------\n") - progress += 7 - it.onNext(ProgressAndDetail(progress, builder.toString())) - } - - // 3.okhttp访问链接 - val urls = arrayOf("https://api.ghzs.com/v3d3/index/columns", "https://download.ghzs.com/game?id=55097638fc1a6fa45f8b4568&platform=9u", "https://apk.ghzs666.com/packed/5af00abc02b30f7c038b456c.apk", "http://image.ghzs666.com/pic/5b29b3c92924bcaf5d438d38.jpg", "http://image.ghzhushou.com/pic/586cad378ab49e0f1b91b3e8.png") - for (url in urls) { - builder.append("Url:") - builder.append(url) - builder.append("\n") - - val client = OkHttpClient() - val request = Request.Builder() - .head() - .url(url) - .build() - try { - val response = client.newCall(request).execute() - builder.append("Success:\n") - builder.append("Response:\n") - builder.append(response.toString()) - builder.append("\n") - builder.append("Response Header:\n") - builder.append(response.headers().toString()) - builder.append("\n") - } catch (e: IOException) { - builder.append("Error:\n") - builder.append(Log.getStackTraceString(e)) - } - builder.append("-----------------------------------------------------------------------\n") - progress += 7 - it.onNext(ProgressAndDetail(progress, builder.toString())) - } - - it.onComplete() - }).subscribeOn(Schedulers.io()) + it.onComplete() + }).subscribeOn(Schedulers.io()) .observeOn(AndroidSchedulers.mainThread()) .subscribe(object : Response() { override fun onNext(response: ProgressAndDetail) { @@ -185,44 +185,46 @@ class NetworkDiagnosisActivity : ToolBarActivity() { // 等待10秒,等待js检查完成 view.postDelayed({ // WebView生成长图,也就是超过一屏的图片,代码中的bitmap就是最后生成的长图 - mWebView.measure(View.MeasureSpec.makeMeasureSpec(View.MeasureSpec.UNSPECIFIED, View.MeasureSpec.UNSPECIFIED), - View.MeasureSpec.makeMeasureSpec(0, View.MeasureSpec.UNSPECIFIED)) - mWebView.layout(0, 0, mWebView.measuredWidth, mWebView.measuredHeight) - mWebView.isDrawingCacheEnabled = true - mWebView.buildDrawingCache() - val bitmap = Bitmap.createBitmap(mWebView.measuredWidth, - mWebView.measuredHeight, Bitmap.Config.ARGB_8888) + tryCatchInRelease { + mWebView.measure(View.MeasureSpec.makeMeasureSpec(View.MeasureSpec.UNSPECIFIED, View.MeasureSpec.UNSPECIFIED), + View.MeasureSpec.makeMeasureSpec(0, View.MeasureSpec.UNSPECIFIED)) + mWebView.layout(0, 0, mWebView.measuredWidth, mWebView.measuredHeight) + mWebView.isDrawingCacheEnabled = true + mWebView.buildDrawingCache() + val bitmap = Bitmap.createBitmap(mWebView.measuredWidth, + mWebView.measuredHeight, Bitmap.Config.ARGB_8888) - // 画布的宽高和WebView的网页保持一致 - val canvas = Canvas(bitmap) - val paint = Paint() - canvas.drawBitmap(bitmap, 0F, mWebView.measuredHeight.toFloat(), paint) - mWebView.draw(canvas) + // 画布的宽高和WebView的网页保持一致 + val canvas = Canvas(bitmap) + val paint = Paint() + canvas.drawBitmap(bitmap, 0F, mWebView.measuredHeight.toFloat(), paint) + mWebView.draw(canvas) - // 保存成文件 - val filePath = bitmap2File(bitmap) + // 保存成文件 + val filePath = bitmap2File(bitmap) - builder.append("WebView Long Image Path:\n") - builder.append(filePath) - builder.append("\n") - builder.append("\n") - builder.append(mSuccessHint) + builder.append("WebView Long Image Path:\n") + builder.append(filePath) + builder.append("\n") + builder.append("\n") + builder.append(mSuccessHint) - builder.setSpan(object : ClickableSpan() { - override fun updateDrawState(ds: TextPaint) { - super.updateDrawState(ds) - ds.color = resources.getColor(R.color.theme_font) - ds.isUnderlineText = false - } + builder.setSpan(object : ClickableSpan() { + override fun updateDrawState(ds: TextPaint) { + super.updateDrawState(ds) + ds.color = resources.getColor(R.color.theme_font) + ds.isUnderlineText = false + } - override fun onClick(widget: View) { - CommentUtils.copyText(builder.toString().replace(mSuccessHint, ""), applicationContext) - } - }, builder.length - mSuccessHint.length, builder.length, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE) + override fun onClick(widget: View) { + CommentUtils.copyText(builder.toString().replace(mSuccessHint, ""), applicationContext) + } + }, builder.length - mSuccessHint.length, builder.length, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE) - mResult.text = builder - mResult.setMovementMethod(LinkMovementMethod.getInstance()) - setResultProgress(100) + mResult.text = builder + mResult.setMovementMethod(LinkMovementMethod.getInstance()) + setResultProgress(100) + } }, 1000) } } @@ -252,7 +254,7 @@ class NetworkDiagnosisActivity : ToolBarActivity() { override fun handleBackPressed(): Boolean { if (mProgressData < 100) { DialogUtils.showAlertDialog(this, "确认退出", "网络诊断还未完成,退出会终止所有诊断进程,确定退出吗?" - ,"确定", "取消", DialogUtils.ConfirmListener { + , "确定", "取消", DialogUtils.ConfirmListener { finish() }, null) return true