From 61933ae75bdf1e70b46ae28a9824ad61a9bfde24 Mon Sep 17 00:00:00 2001 From: aBuild Date: Sat, 23 May 2026 21:31:55 +0800 Subject: [PATCH] =?UTF-8?q?feat(libappbase):=20=E5=AE=9E=E7=8E=B0=E8=B0=83?= =?UTF-8?q?=E8=AF=95=20Token=20=E5=BC=B9=E7=AA=97=E5=8A=9F=E8=83=BD?= =?UTF-8?q?=EF=BC=8C=E6=94=AF=E6=8C=81=E5=A4=8D=E5=88=B6=E4=B8=8E=E9=87=8D?= =?UTF-8?q?=E7=BD=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 将连续点击触发次数从 10 次改为 7 次 - 用 AlertDialog 替换原有 Toast+调试模式切换逻辑 - 弹窗显示调试 Token,点击外部自动关闭 - 新增"复制到剪贴板"按钮,复制后弹窗不关闭 - 新增"重置"按钮,重新生成 UUID Token 并持久化到 SP,刷新弹窗内容 - 新增静态方法 resetDebugToken() 供外部调用 --- appbase/build.properties | 4 +- libappbase/build.properties | 4 +- .../views/DebugSwitchInfoImageView.java | 62 ++++++++++++++++--- 3 files changed, 57 insertions(+), 13 deletions(-) diff --git a/appbase/build.properties b/appbase/build.properties index 2d7d52b..bf134a9 100644 --- a/appbase/build.properties +++ b/appbase/build.properties @@ -1,8 +1,8 @@ #Created by .winboll/winboll_app_build.gradle -#Sat May 23 21:03:59 HKT 2026 +#Sat May 23 21:29:59 HKT 2026 stageCount=21 libraryProject=libappbase baseVersion=15.20 publishVersion=15.20.20 -buildCount=6 +buildCount=10 baseBetaVersion=15.20.21 diff --git a/libappbase/build.properties b/libappbase/build.properties index 2d7d52b..bf134a9 100644 --- a/libappbase/build.properties +++ b/libappbase/build.properties @@ -1,8 +1,8 @@ #Created by .winboll/winboll_app_build.gradle -#Sat May 23 21:03:59 HKT 2026 +#Sat May 23 21:29:59 HKT 2026 stageCount=21 libraryProject=libappbase baseVersion=15.20 publishVersion=15.20.20 -buildCount=6 +buildCount=10 baseBetaVersion=15.20.21 diff --git a/libappbase/src/main/java/cc/winboll/studio/libappbase/views/DebugSwitchInfoImageView.java b/libappbase/src/main/java/cc/winboll/studio/libappbase/views/DebugSwitchInfoImageView.java index 840ce2f..72679ed 100644 --- a/libappbase/src/main/java/cc/winboll/studio/libappbase/views/DebugSwitchInfoImageView.java +++ b/libappbase/src/main/java/cc/winboll/studio/libappbase/views/DebugSwitchInfoImageView.java @@ -1,18 +1,21 @@ package cc.winboll.studio.libappbase.views; +import android.app.AlertDialog; +import android.content.ClipData; +import android.content.ClipboardManager; import android.content.Context; +import android.content.DialogInterface; import android.content.SharedPreferences; import android.util.AttributeSet; import android.view.View; import android.widget.ImageView; -import android.widget.Toast; import java.util.UUID; import cc.winboll.studio.libappbase.GlobalApplication; /** * @Author 豆包&ZhanGSKen * @Date 2026/04/06 19:32 - * @Describe 具有调试模式切换功能的应用Logo控件,连续点击10次弹出提示 + * @Describe 应用Logo控件,连续点击6次弹出调试Token对话框,支持复制与重置 */ public class DebugSwitchInfoImageView extends ImageView { @@ -21,7 +24,7 @@ public class DebugSwitchInfoImageView extends ImageView { // 连续点击计数 private int mClickCount = 0; // 目标点击次数 - private static final int TARGET_CLICK_COUNT = 10; + private static final int TARGET_CLICK_COUNT = 7; private static String mDebugToken = null; private static final String SP_DEBUG_TOKEN = "debug_token_prefs"; @@ -43,6 +46,51 @@ public class DebugSwitchInfoImageView extends ImageView { return mDebugToken; } + public static void resetDebugToken() { + Context context = GlobalApplication.getInstance(); + if (context != null) { + mDebugToken = UUID.randomUUID().toString(); + SharedPreferences sp = context.getSharedPreferences(SP_DEBUG_TOKEN, Context.MODE_PRIVATE); + sp.edit().putString(KEY_DEBUG_TOKEN, mDebugToken).apply(); + } + } + + private void showDebugTokenDialog() { + final AlertDialog dialog = new AlertDialog.Builder(getContext()).create(); + dialog.setTitle("调试Token"); + dialog.setMessage(getDebugToken()); + dialog.setCanceledOnTouchOutside(true); + dialog.setButton(DialogInterface.BUTTON_POSITIVE, "复制到剪贴板", (DialogInterface.OnClickListener) null); + dialog.setButton(DialogInterface.BUTTON_NEUTRAL, "重置", (DialogInterface.OnClickListener) null); + dialog.setButton(DialogInterface.BUTTON_NEGATIVE, "关闭", (DialogInterface.OnClickListener) null); + dialog.setOnShowListener(new DialogInterface.OnShowListener() { + @Override + public void onShow(DialogInterface d) { + dialog.getButton(AlertDialog.BUTTON_POSITIVE).setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + ClipboardManager cm = (ClipboardManager) getContext().getSystemService(Context.CLIPBOARD_SERVICE); + cm.setPrimaryClip(ClipData.newPlainText("DebugToken", getDebugToken())); + } + }); + dialog.getButton(AlertDialog.BUTTON_NEUTRAL).setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + resetDebugToken(); + dialog.setMessage(getDebugToken()); + } + }); + dialog.getButton(AlertDialog.BUTTON_NEGATIVE).setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + dialog.dismiss(); + } + }); + } + }); + dialog.show(); + } + public DebugSwitchInfoImageView(Context context) { super(context); init(); @@ -68,13 +116,9 @@ public class DebugSwitchInfoImageView extends ImageView { @Override public void onClick(View v) { mClickCount++; - if (mClickCount == TARGET_CLICK_COUNT) { - // 达到10次,弹出Toast - Toast.makeText(getContext(), "连续点击已达到10次,现在开启应用调试功能。", Toast.LENGTH_SHORT).show(); - GlobalApplication.setIsDebugging(true); - GlobalApplication.saveDebugStatus(GlobalApplication.getInstance()); - // 重置计数,可再次触发 + if (mClickCount >= TARGET_CLICK_COUNT) { mClickCount = 0; + showDebugTokenDialog(); } } });