You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

TWA离线页面实现遇阻:自定义LauncherActivity无法替换恐龙页

自定义TWA离线页面不生效的排查与修复

以下是针对你遇到的「遵循文档后仍显示默认恐龙离线页」问题的具体排查方向:

1. 修正Offline Activity的继承关系

你提到让离线Activity继承LauncherActivity,这是核心误区:自定义离线页面的Activity无需继承TWA的LauncherActivity,它应该是一个普通的Android Activity(继承AppCompatActivity即可)。如果继承LauncherActivity,会触发TWA的默认加载逻辑,导致自定义布局被覆盖。

2. 确保错误回调完全拦截默认行为

在你的LauncherActivity中,必须正确重写TWA的错误处理方法,拦截网络失败的场景并跳转至自定义离线页,同时终止当前LauncherActivity避免恐龙页显示:

@Override
public void onReceivedError(WebView view, int errorCode, String description, String failingUrl) {
    // 判断网络是否不可用
    if (!isNetworkAvailable()) {
        startActivity(new Intent(this, OfflineActivity.class));
        finish(); // 必须终止当前TWA启动页,阻止默认恐龙页加载
    } else {
        super.onReceivedError(view, errorCode, description, failingUrl);
    }
}

// 实现准确的网络状态判断(适配Android 10+)
private boolean isNetworkAvailable() {
    ConnectivityManager cm = (ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE);
    if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
        Network network = cm.getActiveNetwork();
        if (network == null) return false;
        NetworkCapabilities capabilities = cm.getNetworkCapabilities(network);
        return capabilities != null && (capabilities.hasTransport(NetworkCapabilities.TRANSPORT_WIFI) 
                || capabilities.hasTransport(NetworkCapabilities.TRANSPORT_CELLULAR));
    } else {
        NetworkInfo activeNetwork = cm.getActiveNetworkInfo();
        return activeNetwork != null && activeNetwork.isConnected();
    }
}

注意:如果使用最新版的androidbrowserhelper库,需要重写TwaWebViewClient的onReceivedError方法,而非原生WebViewClient。

3. 检查Manifest的配置正确性

  • 确认离线Activity的声明无错误,无需添加TWA相关的Intent Filter,保持普通Activity配置即可:
<activity
    android:name=".OfflineActivity"
    android:exported="false" />
  • 确保LauncherActivity的Intent Filter是唯一的TWA入口,避免离线Activity的配置干扰它的逻辑。

4. 验证离线页的独立可用性

先将OfflineActivity设置为默认启动Activity(修改Manifest中的intent-filter为MAIN和LAUNCHER),测试它能否正常显示自定义布局。如果布局无法加载,先修复布局文件的拼写、控件引用等问题,再整合回TWA流程。

5. 排查TWA库版本与配置冲突

  • 确保依赖的com.google.androidbrowserhelper:androidbrowserhelper为最新稳定版,旧版本可能存在错误回调不触发的bug。
  • 检查Manifest中TWA的meta-data配置(如DEFAULT_URL),确保没有强制加载在线页面的逻辑覆盖离线处理。

内容的提问来源于stack exchange,提问作者Toushirou

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.11 11:10:43