From e80b198aa5803e67d113af893633e4da167d42bf Mon Sep 17 00:00:00 2001 From: juntao Date: Tue, 11 Aug 2020 10:38:14 +0800 Subject: [PATCH] =?UTF-8?q?=E6=B7=BB=E5=8A=A0=E7=AE=80=E5=8D=95=E7=9A=84?= =?UTF-8?q?=E9=A1=B5=E9=9D=A2=E5=BF=AB=E9=80=9F=E8=B7=B3=E8=BD=AC=E5=8A=9F?= =?UTF-8?q?=E8=83=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../main/java/com/gh/base/BaseActivity.java | 11 ++- .../com/gh/common/util/EntranceUtils.java | 90 ++++++++++++++++++- .../java/com/gh/gamecenter/MainActivity.java | 6 ++ dependencies.gradle | 3 +- 4 files changed, 107 insertions(+), 3 deletions(-) diff --git a/app/src/main/java/com/gh/base/BaseActivity.java b/app/src/main/java/com/gh/base/BaseActivity.java index a96f199260..9812165989 100644 --- a/app/src/main/java/com/gh/base/BaseActivity.java +++ b/app/src/main/java/com/gh/base/BaseActivity.java @@ -27,6 +27,7 @@ import com.gh.base.fragment.BaseFragment; import com.gh.common.constant.Constants; import com.gh.common.util.DialogUtils; import com.gh.common.util.DisplayUtils; +import com.gh.common.util.EntranceUtils; import com.gh.common.util.MtaHelper; import com.gh.common.util.PackageInstaller; import com.gh.common.util.RunningUtils; @@ -169,14 +170,15 @@ public abstract class BaseActivity extends BaseAppCompatActivity implements Easy LinearLayout ll = new LinearLayout(this); TextView tv = new TextView(this); String envText = "正式环境"; + tv.setBackground(ContextCompat.getDrawable(this, R.color.theme)); if (BuildConfig.FLAVOR.equals("internal")) { envText = "测试环境"; + tv.setBackground(ContextCompat.getDrawable(this, R.color.red)); } tv.setText(envText); tv.setGravity(Gravity.CENTER); tv.setTextColor(Color.WHITE); tv.setTextSize(TypedValue.COMPLEX_UNIT_SP, 13); - tv.setBackground(ContextCompat.getDrawable(this, R.color.red)); tv.measure(0, 0); tv.setAlpha(0.15F); int height = tv.getMeasuredHeight(); @@ -187,6 +189,13 @@ public abstract class BaseActivity extends BaseAppCompatActivity implements Easy ll.addView(tv); ll.setPadding(0, (width - height) / 2, 0, (width - height) / 2); + if (BuildConfig.DEBUG) { + ll.setOnLongClickListener(v -> { + EntranceUtils.saveShortcut(this.getClass().getName(), getIntent().getExtras()); + return true; + }); + } + screenRootView.addView(view); screenRootView.addView(ll); diff --git a/app/src/main/java/com/gh/common/util/EntranceUtils.java b/app/src/main/java/com/gh/common/util/EntranceUtils.java index a5ed41f9b9..921539d261 100644 --- a/app/src/main/java/com/gh/common/util/EntranceUtils.java +++ b/app/src/main/java/com/gh/common/util/EntranceUtils.java @@ -1,17 +1,31 @@ package com.gh.common.util; +import android.app.Activity; import android.content.Context; import android.content.Intent; +import android.os.Build; import android.os.Bundle; +import android.os.Parcelable; +import android.text.TextUtils; + +import androidx.appcompat.app.AppCompatActivity; import com.gh.common.avoidcallback.AvoidOnResultManager; import com.gh.common.avoidcallback.Callback; +import com.gh.gamecenter.BuildConfig; import com.gh.gamecenter.MainActivity; import com.gh.gamecenter.NormalActivity; import com.gh.gamecenter.SplashScreenActivity; import com.gh.gamecenter.normal.NormalFragment; +import com.halo.assistant.HaloApp; +import com.lightgame.utils.Utils; -import androidx.appcompat.app.AppCompatActivity; +import org.json.JSONObject; + +import java.util.Iterator; +import java.util.Set; + +import javax.annotation.Nullable; /** * @author CsHeng @@ -27,6 +41,7 @@ public class EntranceUtils { public static final String KEY_GAMEID = "gameId"; public static final String KEY_ID = "id"; public static final String KEY_URL = "url"; + public static final String KEY_BUNDLE = "bundle"; public static final String KEY_GAMENAME = "gameName"; public static final String KEY_PACKAGE_MD5 = "package_md5"; public static final String HOST_ARTICLE = "article"; @@ -231,4 +246,77 @@ public class EntranceUtils { context.startActivity(SplashScreenActivity.getSplashScreenIntent(context, bundle)); } } + + public static void saveShortcut(String activityName, @Nullable Bundle bundle) { + if (BuildConfig.DEBUG) { + JSONObject json = new JSONObject(); + + if (activityName.contains("MainActivity")) { + SPUtils.setString(EntranceUtils.KEY_BUNDLE, ""); + return; + } + + if (bundle == null) bundle = new Bundle(); + try { + Set keys = bundle.keySet(); + json.put(KEY_TO, activityName); + for (String key : keys) { + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) { + Object object = bundle.get(key); + if (object instanceof Parcelable) { + String parcelableName = key + ":parcelable"; + String parcelableType = object.getClass().getName(); + String objectJsonString = GsonUtils.toJson(object); + JSONObject jObject = new JSONObject(objectJsonString); + json.put(parcelableName, parcelableType); + json.put(key, jObject); + } else { + json.put(key, JSONObject.wrap(bundle.get(key))); + } + } + } + Utils.toast(HaloApp.getInstance().getApplication(), "保存捷径成功"); + SPUtils.setString(EntranceUtils.KEY_BUNDLE, json.toString()); + } catch (Exception e) { + e.printStackTrace(); + SPUtils.setString(EntranceUtils.KEY_BUNDLE, ""); + } + } + } + + public static void jumpShortcut(Activity activity) { + if (BuildConfig.DEBUG) { + if (!hasShortcut()) return; + + Bundle bundle = new Bundle(); + try { + JSONObject jsonObject = new JSONObject(SPUtils.getString(EntranceUtils.KEY_BUNDLE)); + Iterator iter = jsonObject.keys(); + String parcelableName = ""; + while (iter.hasNext()) { + String key = (String) iter.next(); + String value = jsonObject.getString(key); + if (key.contains(":parcelable")) { + parcelableName = value; + } else { + if (!TextUtils.isEmpty(parcelableName)) { + Class gClass = Class.forName(parcelableName); + bundle.putParcelable(key, ((Parcelable) GsonUtils.fromJson(value, gClass))); + } else { + bundle.putString(key, value); + } + } + } + } catch (Exception e) { + e.printStackTrace(); + } + + jumpActivity(activity, bundle); + } + } + + public static boolean hasShortcut() { + return !TextUtils.isEmpty(SPUtils.getString(EntranceUtils.KEY_BUNDLE)); + } + } diff --git a/app/src/main/java/com/gh/gamecenter/MainActivity.java b/app/src/main/java/com/gh/gamecenter/MainActivity.java index 75d4406810..7caac22352 100644 --- a/app/src/main/java/com/gh/gamecenter/MainActivity.java +++ b/app/src/main/java/com/gh/gamecenter/MainActivity.java @@ -244,6 +244,12 @@ public class MainActivity extends BaseActivity { doSkip(); } + if (BuildConfig.DEBUG) { + handler.postDelayed(() -> { + EntranceUtils.jumpShortcut(this); + }, 500); + } + handler.postDelayed(() -> { PushHelper.postPushClickAction(this.getApplicationContext(), null); }, 2000); diff --git a/dependencies.gradle b/dependencies.gradle index 0ec16422cb..fcbd2e0697 100644 --- a/dependencies.gradle +++ b/dependencies.gradle @@ -28,7 +28,7 @@ ext { viewpager2 = "1.0.0" ktx = "1.2.0" localbroadcastmanager = "1.0.0" - + material = "1.1.0" butterKnife = "10.1.0" @@ -103,4 +103,5 @@ ext { oss = "2.9.2" toolargetool = "0.2.1@aar" chart = "3.1.0" + consecutiveScroller = "4.1.0" } \ No newline at end of file