fix(browser): 外部调用时直接打开传入的网页链接,不再默认加载首页

- BrowserFragment 新增 newInstance(initialUrl) 工厂方法
- initWinBoLLView 优先使用外部传入的 URL 参数
- MainActivity 在创建 Fragment 时即传入外部 URL,避免先加载首页再跳转的闪烁
This commit is contained in:
2026-05-06 11:28:14 +08:00
parent cd0599d639
commit 39e825f03e
3 changed files with 46 additions and 16 deletions

View File

@@ -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

View File

@@ -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) {

View File

@@ -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接收应用内消息 -------------------