From 9b205366f7b791540f6e51df71e76200b7603407 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=BC=A0=E7=8E=89=E4=B9=85?= <1484288157@qq.com> Date: Tue, 16 Jun 2020 18:29:20 +0800 Subject: [PATCH 01/18] =?UTF-8?q?1.=E4=BF=AE=E6=94=B9=E8=A7=86=E9=A2=91?= =?UTF-8?q?=E6=B5=81=E5=B9=BF=E5=91=8Agif=E4=B8=8D=E6=92=AD=E6=94=BE=202.?= =?UTF-8?q?=E6=B7=BB=E5=8A=A0=E7=BD=91=E9=A1=B5=E8=B7=B3=E8=BD=AC=E6=94=AF?= =?UTF-8?q?=E4=BB=98=E5=AE=9D=E5=BE=AE=E4=BF=A1=E6=94=AF=E4=BB=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/gh/common/DefaultWebViewUrlHandler.kt | 25 +++++++++++++++---- .../java/com/gh/common/view/AdBannerView.kt | 6 +++-- .../video/detail/HomeVideoFragment.kt | 4 +-- app/src/main/res/layout/item_ad_banner.xml | 5 ++-- 4 files changed, 29 insertions(+), 11 deletions(-) diff --git a/app/src/main/java/com/gh/common/DefaultWebViewUrlHandler.kt b/app/src/main/java/com/gh/common/DefaultWebViewUrlHandler.kt index 1690b441a9..3a1ef5522f 100644 --- a/app/src/main/java/com/gh/common/DefaultWebViewUrlHandler.kt +++ b/app/src/main/java/com/gh/common/DefaultWebViewUrlHandler.kt @@ -4,13 +4,10 @@ import android.content.Context import android.content.Intent import android.net.Uri import android.text.TextUtils -import com.gh.common.util.CheckLoginUtils -import com.gh.common.util.DialogUtils -import com.gh.common.util.DirectUtils +import com.gh.common.util.* import com.gh.common.util.DirectUtils.directToGameDetailVideoStreaming import com.gh.common.util.DirectUtils.directToGameVideo import com.gh.common.util.DirectUtils.directToVideoDetail -import com.gh.common.util.EntranceUtils import com.gh.gamecenter.* import com.gh.gamecenter.entity.CommunityEntity import com.gh.gamecenter.entity.VideoLinkEntity @@ -18,6 +15,7 @@ import com.gh.gamecenter.subject.SubjectActivity import com.gh.gamecenter.video.detail.VideoDetailContainerViewModel import com.lightgame.utils.Utils + object DefaultWebViewUrlHandler { @JvmStatic @@ -178,7 +176,7 @@ object DefaultWebViewUrlHandler { val tag = uri.getQueryParameter("tag") ?: "" DirectUtils.directAskColumnLabelDetail(context, tag, community, entrance, "") } - EntranceUtils.HOST_COMMUNITY_COLUMN_DETAIL->{ + EntranceUtils.HOST_COMMUNITY_COLUMN_DETAIL -> { val community = CommunityEntity() community.id = uri.getQueryParameter("community_id") ?: "" community.name = uri.getQueryParameter("community_name") ?: "" @@ -190,6 +188,23 @@ object DefaultWebViewUrlHandler { } return true } + + if (url.startsWith("alipays:") || url.startsWith("alipay")) { + try { + context.startActivity(Intent("android.intent.action.VIEW", Uri.parse(url))) + } catch (e: java.lang.Exception) { + ToastUtils.showToast("请安装支付宝客户端") + } + return true + } else if (url.startsWith("weixin")) { + try { + context.startActivity(Intent("android.intent.action.VIEW", Uri.parse(url))) + } catch (e: java.lang.Exception) { + ToastUtils.showToast("请安装微信客户端") + } + return true + } + if ("http" != uri.scheme && "https" != uri.scheme) return true return false } diff --git a/app/src/main/java/com/gh/common/view/AdBannerView.kt b/app/src/main/java/com/gh/common/view/AdBannerView.kt index 89513c5bec..26dde9c6c0 100644 --- a/app/src/main/java/com/gh/common/view/AdBannerView.kt +++ b/app/src/main/java/com/gh/common/view/AdBannerView.kt @@ -8,7 +8,9 @@ import android.widget.LinearLayout import androidx.core.content.ContextCompat import androidx.recyclerview.widget.RecyclerView import androidx.viewpager2.widget.ViewPager2 +import com.facebook.drawee.view.SimpleDraweeView import com.gh.common.util.DisplayUtils +import com.gh.common.util.ImageUtils import com.gh.common.util.rxTimer import com.gh.gamecenter.R import com.gh.gamecenter.entity.SettingsEntity @@ -188,8 +190,8 @@ class AdBannerView : LinearLayout { override fun onBindViewHolder(holder: RecyclerView.ViewHolder, position: Int) { val ad = mDatas[position % mDatas.size] - val view = holder.itemView as ImageView - Picasso.with(context).load(ad.image).into(view) + val view = holder.itemView as SimpleDraweeView + ImageUtils.display(view,ad.image) holder.itemView.setOnClickListener { onItemClick?.invoke(position % mDatas.size) } diff --git a/app/src/main/java/com/gh/gamecenter/video/detail/HomeVideoFragment.kt b/app/src/main/java/com/gh/gamecenter/video/detail/HomeVideoFragment.kt index 63342892c7..28fa3931a2 100644 --- a/app/src/main/java/com/gh/gamecenter/video/detail/HomeVideoFragment.kt +++ b/app/src/main/java/com/gh/gamecenter/video/detail/HomeVideoFragment.kt @@ -44,10 +44,10 @@ class HomeVideoFragment : BaseLazyFragment() { //预加载广告图片 val videoAdvertisement = Config.getSettings()?.videoAdvertisement videoAdvertisement?.left?.let { ads -> - ads.forEach { Picasso.with(requireContext()).load(it.image).fetch() } + ads.forEach { ImageUtils.prefetchToDiskCache(it.image) } } videoAdvertisement?.right?.let { ads -> - ads.forEach { Picasso.with(requireContext()).load(it.image).fetch() } + ads.forEach { ImageUtils.prefetchToDiskCache(it.image) } } } diff --git a/app/src/main/res/layout/item_ad_banner.xml b/app/src/main/res/layout/item_ad_banner.xml index 91ab3c7058..a6e13b6cc8 100644 --- a/app/src/main/res/layout/item_ad_banner.xml +++ b/app/src/main/res/layout/item_ad_banner.xml @@ -1,7 +1,8 @@ - \ No newline at end of file + app:placeholderImageScaleType="fitXY"/> \ No newline at end of file From 2d551a3f7398af93c37e9ce0ea113335e305f855 Mon Sep 17 00:00:00 2001 From: kehaoyuan Date: Wed, 17 Jun 2020 17:42:37 +0800 Subject: [PATCH 02/18] =?UTF-8?q?VersionCode=20=E6=94=B9=E4=B8=BA171?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- dependencies.gradle | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/dependencies.gradle b/dependencies.gradle index d5affe3592..5255de44d3 100644 --- a/dependencies.gradle +++ b/dependencies.gradle @@ -7,7 +7,7 @@ ext { targetSdkVersion = 26 // application info - versionCode = 170 + versionCode = 171 versionName = "4.0.1" applicationId = "com.gh.gamecenter" From e1fc23a1bbe39e9dfa664e0b54ebd7d2217f5bfc Mon Sep 17 00:00:00 2001 From: kehaoyuan Date: Wed, 17 Jun 2020 17:51:22 +0800 Subject: [PATCH 03/18] tinker_base-4.0.1_bugfix --- gradle.properties | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/gradle.properties b/gradle.properties index a26b3ea357..e5b12af9e1 100644 --- a/gradle.properties +++ b/gradle.properties @@ -52,8 +52,8 @@ API_HOST=https\://api.ghzs.com/v4d0d1/ # 请不要手动改动下面的值,除非你明确需要以某个apk作为基准包,需要打包请以scripts/tinker*.sh为准 TINKER_ENABLE= -TINKER_ID=a3d693d -TINKER_BASE_APK_DIR=app-0605-10-00-18_a3d693d +TINKER_ID=2d551a3 +TINKER_BASE_APK_DIR=app-0617-17-45-58_2d551a3 android.useAndroidX=true android.enableJetifier=true From 4a1c81ffb48af84f54f9df9e2f77ea3486b143d0 Mon Sep 17 00:00:00 2001 From: juntao Date: Mon, 13 Jul 2020 09:49:51 +0800 Subject: [PATCH 04/18] =?UTF-8?q?=E9=A2=84=E7=95=99=E6=96=B9=E6=B3=95?= =?UTF-8?q?=E4=BE=9B=E7=BD=91=E9=A1=B5=E7=AB=AF=E7=A1=AE=E5=AE=9A=E6=98=AF?= =?UTF-8?q?=E5=90=A6=E5=B7=B2=E5=AE=89=E8=A3=85=E6=9F=90=E5=BA=94=E7=94=A8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/src/main/java/com/gh/common/DefaultJsApi.kt | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/app/src/main/java/com/gh/common/DefaultJsApi.kt b/app/src/main/java/com/gh/common/DefaultJsApi.kt index 0e4ecd9367..5244b4db9d 100644 --- a/app/src/main/java/com/gh/common/DefaultJsApi.kt +++ b/app/src/main/java/com/gh/common/DefaultJsApi.kt @@ -142,6 +142,20 @@ class DefaultJsApi(var context: Context) { context?.startActivity(ViewImageActivity.getViewImageIntent(context, imageEvent.imageList, imageEvent.position, "浏览器")) } + @JavascriptInterface + fun isInstalled(event: Any): String { + val localInstalledPackageList = PackageUtils.getAllPackageName(HaloApp.getInstance().application) + val packageNameList: ArrayList = event.toString().toObject() ?: ArrayList() + + for (packageName in packageNameList) { + if (!localInstalledPackageList.contains(packageName)) { + return "false" + } + } + + return "true" + } + @JavascriptInterface fun openBase64Image(event: Any) { val context = CurrentActivityHolder.getCurrentActivity() From 9da6cbf097724c94f07edc8ba1a71291258aec5e Mon Sep 17 00:00:00 2001 From: chenjuntao Date: Mon, 13 Jul 2020 15:23:08 +0800 Subject: [PATCH 05/18] =?UTF-8?q?=E4=BF=AE=E5=A4=8D=207.1.1=20=E7=B3=BB?= =?UTF-8?q?=E7=BB=9F=E4=B8=8A=20toast=20=E5=8F=AF=E8=83=BD=E5=87=BA?= =?UTF-8?q?=E7=8E=B0=E7=9A=84=E9=97=AA=E9=80=80=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- libraries/LGLibrary | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/libraries/LGLibrary b/libraries/LGLibrary index a4fd7372d8..37871a0ba4 160000 --- a/libraries/LGLibrary +++ b/libraries/LGLibrary @@ -1 +1 @@ -Subproject commit a4fd7372d814437f0a2e93149a372c8e9dd03e65 +Subproject commit 37871a0ba485f4dd688c54be61f0c96eb656057b From 5b9bef79da219d36d301ba88c09410a7eb4ac0ea Mon Sep 17 00:00:00 2001 From: chenjuntao Date: Mon, 13 Jul 2020 16:01:11 +0800 Subject: [PATCH 06/18] =?UTF-8?q?=E4=BF=AE=E5=A4=8D=E4=B8=80=E4=BA=9B?= =?UTF-8?q?=E9=97=AA=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 From 2a74e35388ca983809fefd51b697707f41745a99 Mon Sep 17 00:00:00 2001 From: chenjuntao Date: Mon, 13 Jul 2020 16:41:22 +0800 Subject: [PATCH 07/18] =?UTF-8?q?=E4=BF=AE=E5=A4=8D=207.1.1=20=E7=B3=BB?= =?UTF-8?q?=E7=BB=9F=E4=B8=8A=20toast=20=E5=8F=AF=E8=83=BD=E5=87=BA?= =?UTF-8?q?=E7=8E=B0=E7=9A=84=E9=97=AA=E9=80=80=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- libraries/LGLibrary | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/libraries/LGLibrary b/libraries/LGLibrary index 37871a0ba4..9ba459a6c5 160000 --- a/libraries/LGLibrary +++ b/libraries/LGLibrary @@ -1 +1 @@ -Subproject commit 37871a0ba485f4dd688c54be61f0c96eb656057b +Subproject commit 9ba459a6c5ecb5d5c953393f2019259bc32cd9f1 From 5e7559e43fc68e5349dbd722590457e605fc03ad Mon Sep 17 00:00:00 2001 From: kehaoyuan Date: Mon, 13 Jul 2020 16:42:03 +0800 Subject: [PATCH 08/18] =?UTF-8?q?=E4=BF=AE=E5=A4=8D=E4=B8=80=E4=BA=9B?= =?UTF-8?q?=E9=97=AA=E9=80=80=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../main/java/com/gh/gamecenter/gamedetail/fuli/FuLiFragment.kt | 2 +- .../main/java/com/gh/gamecenter/servers/GameServersActivity.kt | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/app/src/main/java/com/gh/gamecenter/gamedetail/fuli/FuLiFragment.kt b/app/src/main/java/com/gh/gamecenter/gamedetail/fuli/FuLiFragment.kt index 1f796dbf96..e2f8ae528d 100644 --- a/app/src/main/java/com/gh/gamecenter/gamedetail/fuli/FuLiFragment.kt +++ b/app/src/main/java/com/gh/gamecenter/gamedetail/fuli/FuLiFragment.kt @@ -80,7 +80,7 @@ class FuLiFragment : BaseFragment() { mFuLiViewModel?.fuFiDataLD?.observe(this, Observer { mViewSkeletonScreen.hide() - reuse_ll_loading.visibility = View.GONE + reuse_ll_loading?.visibility = View.GONE if (it.status == Status.SUCCESS) { mAdapter?.itemList = it.data diff --git a/app/src/main/java/com/gh/gamecenter/servers/GameServersActivity.kt b/app/src/main/java/com/gh/gamecenter/servers/GameServersActivity.kt index 4a1dff84de..29b3dd0588 100644 --- a/app/src/main/java/com/gh/gamecenter/servers/GameServersActivity.kt +++ b/app/src/main/java/com/gh/gamecenter/servers/GameServersActivity.kt @@ -88,7 +88,7 @@ class GameServersActivity : ToolBarActivity() { private fun setPageScrollState(state: Int) { runOnIoThread { for (fragment in mFragments) { - if (fragment.userVisibleHint) { + if (fragment.userVisibleHint && fragment.host != null) { val fragments = fragment.childFragmentManager.fragments for (childFragment in fragments) { if (childFragment is GameServersContentFragment) { From 58b1cd4b1285048023addb8045eada08e56c3242 Mon Sep 17 00:00:00 2001 From: kehaoyuan Date: Mon, 13 Jul 2020 16:45:19 +0800 Subject: [PATCH 09/18] =?UTF-8?q?versionCode=20=E6=94=B9=E4=B8=BA182?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- dependencies.gradle | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/dependencies.gradle b/dependencies.gradle index d678051eda..5e28f6eb6f 100644 --- a/dependencies.gradle +++ b/dependencies.gradle @@ -7,7 +7,7 @@ ext { targetSdkVersion = 26 // application info - versionCode = 181 + versionCode = 182 versionName = "4.0.2" applicationId = "com.gh.gamecenter" From a305db7b13a9e531acade2a55cbd1e39be526ee0 Mon Sep 17 00:00:00 2001 From: kehaoyuan Date: Mon, 13 Jul 2020 17:14:15 +0800 Subject: [PATCH 10/18] tinker_base 4.0.2-182 --- gradle.properties | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/gradle.properties b/gradle.properties index 5fd36f104d..ef7fe19b41 100644 --- a/gradle.properties +++ b/gradle.properties @@ -51,8 +51,8 @@ SENSITIVE_API_HOST=https\://and-core-api.ghzs.com/v4d0d2/ # 请不要手动改动下面的值,除非你明确需要以某个apk作为基准包,需要打包请以scripts/tinker*.sh为准 TINKER_ENABLE= -TINKER_ID=df693ce -TINKER_BASE_APK_DIR=app-0710-17-07-17_df693ce +TINKER_ID=58b1cd4 +TINKER_BASE_APK_DIR=app-0713-16-50-31_58b1cd4 android.useAndroidX=true android.enableJetifier=true From fddcdfb3aa41e0fb89432627b2f27dd8b1bd1cec Mon Sep 17 00:00:00 2001 From: chenjuntao Date: Tue, 14 Jul 2020 11:59:52 +0800 Subject: [PATCH 11/18] =?UTF-8?q?=E6=9B=B4=E6=94=B9=E4=BB=8A=E6=97=A5?= =?UTF-8?q?=E5=A4=B4=E6=9D=A1SDK=E7=9A=84=E5=88=9D=E5=A7=8B=E5=8C=96?= =?UTF-8?q?=E4=BD=8D=E7=BD=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/gh/gamecenter/SplashScreenActivity.java | 15 ++++++++++----- app/src/main/java/com/halo/assistant/HaloApp.java | 2 -- 2 files changed, 10 insertions(+), 7 deletions(-) diff --git a/app/src/main/java/com/gh/gamecenter/SplashScreenActivity.java b/app/src/main/java/com/gh/gamecenter/SplashScreenActivity.java index 6970cbdabf..e30222afbe 100644 --- a/app/src/main/java/com/gh/gamecenter/SplashScreenActivity.java +++ b/app/src/main/java/com/gh/gamecenter/SplashScreenActivity.java @@ -15,6 +15,12 @@ import android.view.ViewGroup; import android.widget.ImageView; import android.widget.TextView; +import androidx.annotation.NonNull; +import androidx.annotation.Nullable; +import androidx.core.app.ActivityCompat; +import androidx.viewpager.widget.PagerAdapter; +import androidx.viewpager.widget.ViewPager; + import com.g00fy2.versioncompare.Version; import com.gh.base.BaseActivity; import com.gh.common.AppExecutor; @@ -33,6 +39,7 @@ import com.gh.common.util.PackageUtils; import com.gh.common.util.PlatformUtils; import com.gh.common.util.SPUtils; import com.gh.common.util.TagUtils; +import com.gh.common.util.TeaHelper; import com.gh.common.util.UsageStatsHelper; import com.gh.download.DownloadManager; import com.gh.gamecenter.entity.AuthDialogEntity; @@ -56,11 +63,6 @@ import java.util.Date; import java.util.List; import java.util.Locale; -import androidx.annotation.NonNull; -import androidx.annotation.Nullable; -import androidx.core.app.ActivityCompat; -import androidx.viewpager.widget.PagerAdapter; -import androidx.viewpager.widget.ViewPager; import io.reactivex.android.schedulers.AndroidSchedulers; import io.reactivex.schedulers.Schedulers; import pub.devrel.easypermissions.AfterPermissionGranted; @@ -276,6 +278,9 @@ public class SplashScreenActivity extends BaseActivity { private void launchMainActivity() { getUniqueId(); + // 在可能获取了相关权限后才初始化今日头条SDK + TeaHelper.init(getApplication(), HaloApp.getInstance().getChannel()); + Bundle bundle = getIntent().getExtras(); Intent intent = new Intent(SplashScreenActivity.this, MainActivity.class); if (bundle != null) intent.putExtras(bundle); diff --git a/app/src/main/java/com/halo/assistant/HaloApp.java b/app/src/main/java/com/halo/assistant/HaloApp.java index 1536888f8e..8da7fe384b 100644 --- a/app/src/main/java/com/halo/assistant/HaloApp.java +++ b/app/src/main/java/com/halo/assistant/HaloApp.java @@ -28,7 +28,6 @@ import com.gh.common.util.DownloadObserver; import com.gh.common.util.GdtHelper; import com.gh.common.util.HomeBottomBarHelper; import com.gh.common.util.PackageHelper; -import com.gh.common.util.TeaHelper; import com.gh.common.util.TimestampUtils; import com.gh.common.videolog.VideoRecordUtils; import com.gh.gamecenter.BuildConfig; @@ -138,7 +137,6 @@ public class HaloApp extends TinkerAppLike { PushManager.init(mChannel); - TeaHelper.init(getApplication(), mChannel); DataUtils.init(getApplication(), mChannel); GidHelper.getInstance().init(getApplication()); // TTAdSdk.init(getApplication(), new TTAdConfig.Builder().appId(Config.TTAD_APPID) From 154dfc8538a094e459ada47fcac5921c78d475af Mon Sep 17 00:00:00 2001 From: kehaoyuan Date: Wed, 15 Jul 2020 15:03:56 +0800 Subject: [PATCH 12/18] =?UTF-8?q?DsBridge=E5=8E=9F=E7=94=9FApi=E6=94=AF?= =?UTF-8?q?=E6=8C=81=E6=97=A0=E5=8F=82=E6=96=B9=E6=B3=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/gh/common/view/dsbridge/DWebView.java | 42 ++++++++++++------- 1 file changed, 28 insertions(+), 14 deletions(-) diff --git a/app/src/main/java/com/gh/common/view/dsbridge/DWebView.java b/app/src/main/java/com/gh/common/view/dsbridge/DWebView.java index 48a2fe1b20..77fcf98c66 100644 --- a/app/src/main/java/com/gh/common/view/dsbridge/DWebView.java +++ b/app/src/main/java/com/gh/common/view/dsbridge/DWebView.java @@ -75,6 +75,12 @@ public class DWebView extends WebView { } } + @Keep + @JavascriptInterface + public String call(String methodName) { + return call(methodName, ""); + } + @Keep @JavascriptInterface public String call(String methodName, String argStr) { @@ -93,7 +99,7 @@ public class DWebView extends WebView { PrintDebugInfo(error); return ret.toString(); } - Object arg=null; + Object arg = null; Method method = null; String callback = null; @@ -102,7 +108,7 @@ public class DWebView extends WebView { if (args.has("_dscbstub")) { callback = args.getString("_dscbstub"); } - if(args.has("data")) { + if (args.has("data")) { arg = args.get("data"); } } catch (JSONException e) { @@ -123,7 +129,10 @@ public class DWebView extends WebView { try { method = cls.getMethod(methodName, new Class[]{Object.class}); } catch (Exception ex) { - + try { + method = cls.getMethod(methodName, new Class[]{}); + } catch (Exception ignore) { + } } } @@ -187,7 +196,12 @@ public class DWebView extends WebView { } }); } else { - retData = method.invoke(jsb, arg); + Class[] methodParameterTypes = method.getParameterTypes(); + if (methodParameterTypes.length == 0) { + retData = method.invoke(jsb); + } else { + retData = method.invoke(jsb, arg); + } ret.put("code", 0); ret.put("data", retData); return ret.toString(); @@ -307,7 +321,10 @@ public class DWebView extends WebView { try { method = cls.getMethod(nameStr[1], new Class[]{Object.class}); } catch (Exception ex) { - + try { + method = cls.getMethod(nameStr[1], new Class[]{}); + } catch (Exception ignore) { + } } } if (method != null) { @@ -336,7 +353,7 @@ public class DWebView extends WebView { || javascriptCloseWindowListener.onClose()) { Context context = getContext(); if (context instanceof Activity) { - ((Activity)context).onBackPressed(); + ((Activity) context).onBackPressed(); } } } @@ -359,7 +376,7 @@ public class DWebView extends WebView { @Keep @JavascriptInterface - public void returnValue(final Object obj){ + public void returnValue(final Object obj) { runOnMainThread(new Runnable() { @Override public void run() { @@ -422,9 +439,9 @@ public class DWebView extends WebView { runOnMainThread(new Runnable() { @Override public void run() { - if (url != null && url.startsWith("javascript:")){ + if (url != null && url.startsWith("javascript:")) { DWebView.super.loadUrl(url); - }else{ + } else { callInfoList = new ArrayList<>(); DWebView.super.loadUrl(url); } @@ -444,9 +461,9 @@ public class DWebView extends WebView { runOnMainThread(new Runnable() { @Override public void run() { - if (url != null && url.startsWith("javascript:")){ + if (url != null && url.startsWith("javascript:")) { DWebView.super.loadUrl(url, additionalHttpHeaders); - }else{ + } else { callInfoList = new ArrayList<>(); DWebView.super.loadUrl(url, additionalHttpHeaders); } @@ -996,7 +1013,4 @@ public class DWebView extends WebView { mainHandler.post(runnable); } - - - } From bff20bea49d64fd9487bac851491c19215343ebb Mon Sep 17 00:00:00 2001 From: chenjuntao Date: Wed, 15 Jul 2020 16:29:34 +0800 Subject: [PATCH 13/18] =?UTF-8?q?=E4=BF=AE=E5=A4=8D=207.1.1=20=E7=B3=BB?= =?UTF-8?q?=E7=BB=9F=E4=B8=8A=20toast=20=E5=8F=AF=E8=83=BD=E5=87=BA?= =?UTF-8?q?=E7=8E=B0=E7=9A=84=E9=97=AA=E9=80=80=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- libraries/LGLibrary | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/libraries/LGLibrary b/libraries/LGLibrary index 9ba459a6c5..909dddc4d1 160000 --- a/libraries/LGLibrary +++ b/libraries/LGLibrary @@ -1 +1 @@ -Subproject commit 9ba459a6c5ecb5d5c953393f2019259bc32cd9f1 +Subproject commit 909dddc4d1ceba0ac6292b08414a372dcde9e74a From b8092447ff1d64578570bd349b4288c76ae3945c Mon Sep 17 00:00:00 2001 From: kehaoyuan Date: Wed, 15 Jul 2020 16:30:43 +0800 Subject: [PATCH 14/18] =?UTF-8?q?=E6=B8=B8=E6=88=8F=E5=88=97=E8=A1=A8?= =?UTF-8?q?=E9=BB=98=E8=AE=A4=E4=B8=8D=E6=98=BE=E7=A4=BA=E8=AF=84=E5=88=86?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/src/main/res/layout/game_item.xml | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/app/src/main/res/layout/game_item.xml b/app/src/main/res/layout/game_item.xml index 72f0e718fa..a2ff7eab1e 100644 --- a/app/src/main/res/layout/game_item.xml +++ b/app/src/main/res/layout/game_item.xml @@ -121,7 +121,8 @@ android:paddingRight="8dp" android:text="@{game.commentCount > 3?game.star + ``: `评分过少`}" android:textColor="@{Color.parseColor(game.commentCount > 3?`#1383EB`:`#2496FF`)}" - android:textStyle="bold" /> + android:textStyle="bold" + android:visibility="gone" /> Date: Wed, 15 Jul 2020 16:48:28 +0800 Subject: [PATCH 15/18] =?UTF-8?q?versionCode=20=E6=94=B9=E4=B8=BA183?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- dependencies.gradle | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/dependencies.gradle b/dependencies.gradle index 5e28f6eb6f..740f4a1e2f 100644 --- a/dependencies.gradle +++ b/dependencies.gradle @@ -7,7 +7,7 @@ ext { targetSdkVersion = 26 // application info - versionCode = 182 + versionCode = 183 versionName = "4.0.2" applicationId = "com.gh.gamecenter" From bef6cbb212d0be11b344d3616a8b09845c212f10 Mon Sep 17 00:00:00 2001 From: kehaoyuan Date: Wed, 15 Jul 2020 17:00:17 +0800 Subject: [PATCH 16/18] tinker_base 4.0.2-183 --- gradle.properties | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/gradle.properties b/gradle.properties index ef7fe19b41..69e5f27542 100644 --- a/gradle.properties +++ b/gradle.properties @@ -51,8 +51,8 @@ SENSITIVE_API_HOST=https\://and-core-api.ghzs.com/v4d0d2/ # 请不要手动改动下面的值,除非你明确需要以某个apk作为基准包,需要打包请以scripts/tinker*.sh为准 TINKER_ENABLE= -TINKER_ID=58b1cd4 -TINKER_BASE_APK_DIR=app-0713-16-50-31_58b1cd4 +TINKER_ID=032a89e +TINKER_BASE_APK_DIR=app-0715-16-52-39_032a89e android.useAndroidX=true android.enableJetifier=true From 801f0b95e78acf4b4ef10b14e4bed97438912a59 Mon Sep 17 00:00:00 2001 From: kehaoyuan Date: Tue, 21 Jul 2020 17:01:07 +0800 Subject: [PATCH 17/18] =?UTF-8?q?=E7=89=88=E6=9C=AC=E6=94=B9=E4=B8=BA4.0.3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- dependencies.gradle | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/dependencies.gradle b/dependencies.gradle index 740f4a1e2f..f020064aa3 100644 --- a/dependencies.gradle +++ b/dependencies.gradle @@ -7,8 +7,8 @@ ext { targetSdkVersion = 26 // application info - versionCode = 183 - versionName = "4.0.2" + versionCode = 184 + versionName = "4.0.3" applicationId = "com.gh.gamecenter" // AndroidX From 895d4d5cf14e060500bfe03c8575cd4f0e06a52b Mon Sep 17 00:00:00 2001 From: kehaoyuan Date: Tue, 21 Jul 2020 17:18:49 +0800 Subject: [PATCH 18/18] tinker_base 4.0.3 --- gradle.properties | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/gradle.properties b/gradle.properties index 69e5f27542..ba8ddbafdb 100644 --- a/gradle.properties +++ b/gradle.properties @@ -51,8 +51,8 @@ SENSITIVE_API_HOST=https\://and-core-api.ghzs.com/v4d0d2/ # 请不要手动改动下面的值,除非你明确需要以某个apk作为基准包,需要打包请以scripts/tinker*.sh为准 TINKER_ENABLE= -TINKER_ID=032a89e -TINKER_BASE_APK_DIR=app-0715-16-52-39_032a89e +TINKER_ID=801f0b9 +TINKER_BASE_APK_DIR=app-0721-17-12-02_801f0b9 android.useAndroidX=true android.enableJetifier=true