fix(browser): 外部调用时直接打开传入的网页链接,不再默认加载首页
- BrowserFragment 新增 newInstance(initialUrl) 工厂方法 - initWinBoLLView 优先使用外部传入的 URL 参数 - MainActivity 在创建 Fragment 时即传入外部 URL,避免先加载首页再跳转的闪烁
This commit is contained in:
@@ -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
|
||||
|
||||
@@ -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) {
|
||||
|
||||
@@ -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(接收应用内消息) -------------------
|
||||
|
||||
Reference in New Issue
Block a user