From 39e825f03ed7964081a91bd5a00426c6ed9fe50d Mon Sep 17 00:00:00 2001 From: LaizyBoy Date: Wed, 6 May 2026 11:28:14 +0800 Subject: [PATCH] =?UTF-8?q?fix(browser):=20=E5=A4=96=E9=83=A8=E8=B0=83?= =?UTF-8?q?=E7=94=A8=E6=97=B6=E7=9B=B4=E6=8E=A5=E6=89=93=E5=BC=80=E4=BC=A0?= =?UTF-8?q?=E5=85=A5=E7=9A=84=E7=BD=91=E9=A1=B5=E9=93=BE=E6=8E=A5=EF=BC=8C?= =?UTF-8?q?=E4=B8=8D=E5=86=8D=E9=BB=98=E8=AE=A4=E5=8A=A0=E8=BD=BD=E9=A6=96?= =?UTF-8?q?=E9=A1=B5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - BrowserFragment 新增 newInstance(initialUrl) 工厂方法 - initWinBoLLView 优先使用外部传入的 URL 参数 - MainActivity 在创建 Fragment 时即传入外部 URL,避免先加载首页再跳转的闪烁 --- winboll/build.properties | 4 +-- .../winboll/studio/winboll/MainActivity.java | 26 +++++++++------ .../winboll/fragments/BrowserFragment.java | 32 ++++++++++++++++--- 3 files changed, 46 insertions(+), 16 deletions(-) diff --git a/winboll/build.properties b/winboll/build.properties index 8ccffac..0aae9e2 100644 --- a/winboll/build.properties +++ b/winboll/build.properties @@ -1,8 +1,8 @@ #Created by .winboll/winboll_app_build.gradle -#Wed May 06 11:16:28 CST 2026 +#Wed May 06 11:22:14 CST 2026 stageCount=27 libraryProject= baseVersion=15.11 publishVersion=15.11.26 -buildCount=18 +buildCount=20 baseBetaVersion=15.11.27 diff --git a/winboll/src/main/java/cc/winboll/studio/winboll/MainActivity.java b/winboll/src/main/java/cc/winboll/studio/winboll/MainActivity.java index f746772..e2a9402 100644 --- a/winboll/src/main/java/cc/winboll/studio/winboll/MainActivity.java +++ b/winboll/src/main/java/cc/winboll/studio/winboll/MainActivity.java @@ -41,29 +41,37 @@ public class MainActivity extends DrawerFragmentActivity { initMainHandler(); if (mBrowserFragment == null) { - mBrowserFragment = new BrowserFragment(); + String externalUrl = extractExternalUrl(getIntent()); + if (externalUrl != null) { + mBrowserFragment = BrowserFragment.newInstance(externalUrl); + } else { + mBrowserFragment = new BrowserFragment(); + } addFragment(mBrowserFragment); } showFragment(mBrowserFragment); - handleExternalUrl(getIntent()); } @Override protected void onNewIntent(Intent intent) { super.onNewIntent(intent); - handleExternalUrl(intent); + String externalUrl = extractExternalUrl(intent); + if (externalUrl != null && mBrowserFragment != null && mBrowserFragment.getBrowserHandler() != null) { + Message msg = Message.obtain(); + msg.what = BrowserFragment.MSG_OPEN_URL; + msg.obj = externalUrl; + mBrowserFragment.getBrowserHandler().sendMessage(msg); + } } - private void handleExternalUrl(Intent intent) { + private String extractExternalUrl(Intent intent) { if (intent != null && Intent.ACTION_VIEW.equals(intent.getAction())) { Uri uri = intent.getData(); - if (uri != null && mBrowserFragment != null && mBrowserFragment.getBrowserHandler() != null) { - Message msg = Message.obtain(); - msg.what = BrowserFragment.MSG_OPEN_URL; - msg.obj = uri.toString(); - mBrowserFragment.getBrowserHandler().sendMessage(msg); + if (uri != null) { + return uri.toString(); } } + return null; } public static void sendMessage(Message msg) { diff --git a/winboll/src/main/java/cc/winboll/studio/winboll/fragments/BrowserFragment.java b/winboll/src/main/java/cc/winboll/studio/winboll/fragments/BrowserFragment.java index 890824a..aa7b4ca 100644 --- a/winboll/src/main/java/cc/winboll/studio/winboll/fragments/BrowserFragment.java +++ b/winboll/src/main/java/cc/winboll/studio/winboll/fragments/BrowserFragment.java @@ -50,11 +50,20 @@ public class BrowserFragment extends Fragment implements View.OnClickListener, W // 自定义Handler(接收应用内其他页面发送的消息) private Handler mBrowserHandler; - // 单例创建方法(Java 7 静态工厂模式) + // 单例创建方法(Java 7 显式工厂模式) public static BrowserFragment newInstance() { return new BrowserFragment(); } + // 创建带初始URL的实例(供外部应用调用时使用) + public static BrowserFragment newInstance(String initialUrl) { + BrowserFragment fragment = new BrowserFragment(); + Bundle args = new Bundle(); + args.putString("initial_url", initialUrl); + fragment.setArguments(args); + return fragment; + } + @Nullable @Override public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) { @@ -118,10 +127,23 @@ public class BrowserFragment extends Fragment implements View.OnClickListener, W mWinBoLLView.setProgressBar(mProgressBar); // 设置页面状态监听(this 实现 OnPageStatusListener) mWinBoLLView.setOnPageStatusListener(this); - // 预加载默认页面(winboll.cc 首页) - String defaultUrl = "https://www.winboll.cc"; - mWinBoLLView.loadUrlSafe(defaultUrl); - mEtUrl.setText(defaultUrl); + + // 检查是否有外部传入的初始 URL + String initialUrl = null; + if (getArguments() != null) { + initialUrl = getArguments().getString("initial_url"); + } + + if (initialUrl != null && !initialUrl.isEmpty()) { + // 使用外部传入的 URL + mWinBoLLView.loadUrlSafe(initialUrl); + mEtUrl.setText(initialUrl); + } else { + // 预加载默认页面(winboll.cc 首页) + String defaultUrl = "https://www.winboll.cc"; + mWinBoLLView.loadUrlSafe(defaultUrl); + mEtUrl.setText(defaultUrl); + } } // ------------------- 新增:初始化Handler(接收应用内消息) -------------------