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

Android原生应用method does not override错误及whatsapp://协议处理求助

错误原因

该编译报错的核心是你重写的方法和父类WebViewClient的方法签名不匹配,@Override注解检测到父类不存在你当前编写的方法,因此抛出错误。

修复方案

1. 替换正确的重写方法

根据你需要兼容的Android版本,使用对应正确签名的shouldOverrideUrlLoading方法,以下是兼容所有Android版本的完整写法:

// 适配API 24及以上版本
@Override
public boolean shouldOverrideUrlLoading(WebView view, WebResourceRequest request) {
    String url = request.getUrl().toString();
    if (url.startsWith("whatsapp://")) {
        try {
            Intent intent = Intent.parseUri(url, Intent.URI_INTENT_SCHEME);
            if (intent.resolveActivity(getPackageManager()) != null) {
                startActivity(intent);
                return true;
            }
            Toast.makeText(view.getContext(), "请先安装WhatsApp", Toast.LENGTH_SHORT).show();
            return true;
        } catch (URISyntaxException e) {
            e.printStackTrace();
        }
    }
    // 普通网页链接继续在WebView内加载
    view.loadUrl(url);
    return true;
}

// 适配API 24以下版本,已标记废弃不影响正常运行
@SuppressWarnings("deprecation")
@Override
public boolean shouldOverrideUrlLoading(WebView view, String url) {
    if (url.startsWith("whatsapp://")) {
        try {
            Intent intent = Intent.parseUri(url, Intent.URI_INTENT_SCHEME);
            if (intent.resolveActivity(getPackageManager()) != null) {
                startActivity(intent);
                return true;
            }
            Toast.makeText(view.getContext(), "请先安装WhatsApp", Toast.LENGTH_SHORT).show();
            return true;
        } catch (URISyntaxException e) {
            e.printStackTrace();
        }
    }
    view.loadUrl(url);
    return true;
}

2. 补充必要配置

在AndroidManifest.xml中添加对应权限,避免Android 11及以上版本无法检测到已安装的WhatsApp:

<!-- 基础网络权限,WebView运行必需 -->
<uses-permission android:name="android.permission.INTERNET" />
<!-- Android 11+ 应用可见性配置,用于检测WhatsApp是否安装 -->
<queries>
    <package android:name="com.whatsapp" />
</queries>

3. 验证配置生效

确保你已经给WebView设置了自定义的WebViewClient:

webView.setWebViewClient(new 你的自定义WebViewClient类名());

修改完成后执行菜单栏的Build -> Clean Project再Build -> Rebuild Project,编译错误会自动消失,WhatsApp链接唤起功能也可以正常运行。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.24 21:06:05