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

如何实现WebView内内部链接App打开、外部链接用默认浏览器打开?

解决WebView仅内部链接打开、外部链接跳转系统浏览器的问题

嗨,这个需求其实挺常见的,你只需要自定义WebViewClient并重写shouldOverrideUrlLoading方法,就能轻松区分内部和外部链接的打开方式啦。

原理说明

你之前用的默认WebViewClient会把所有链接都塞进当前WebView加载,我们要做的就是在跳转前判断目标URL是否属于你的域名(moviestreet.club):

  • 如果是内部域名,就让WebView自己继续加载(返回false)
  • 如果是外部域名,就调用系统默认浏览器打开该链接(返回true表示我们接手了这个跳转逻辑)

修改后的完整代码

package club.moviestreet.www.webviewapp;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.content.Intent;
import android.net.Uri;
import android.webkit.WebSettings;
import android.webkit.WebView;
import android.webkit.WebViewClient;

public class MainActivity extends AppCompatActivity {
 private WebView mywebView;
 private static final String MY_DOMAIN = "moviestreet.club";

 @Override
 protected void onCreate(Bundle savedInstanceState) {
 super.onCreate(savedInstanceState);
 setContentView(R.layout.activity_main);
 mywebView = (WebView) findViewById(R.id.webview);
 WebSettings webSettings= mywebView.getSettings();
 webSettings.setJavaScriptEnabled(true);
 mywebView.loadUrl("http://moviestreet.club/");

 // 替换默认WebViewClient为自定义实现
 mywebView.setWebViewClient(new WebViewClient() {
    @Override
    public boolean shouldOverrideUrlLoading(WebView view, String url) {
        // 更严谨的域名判断方式:解析URL后对比主机地址
        Uri targetUri = Uri.parse(url);
        if (MY_DOMAIN.equals(targetUri.getHost())) {
            // 内部链接,交给WebView处理
            return false;
        } else {
            // 外部链接,启动系统浏览器打开
            Intent browserIntent = new Intent(Intent.ACTION_VIEW, targetUri);
            startActivity(browserIntent);
            return true;
        }
    }
 });
 }

 // 返回按钮逻辑保持不变
 @Override
 public void onBackPressed() {
 if(mywebView.canGoBack()) {
 mywebView.goBack();
 } else {
 super.onBackPressed();
 }
 }
}

关键细节提醒

  • 记得导入Intent和Uri类,不然会出现编译错误
  • 用targetUri.getHost()对比域名比简单的contains更严谨,能避免像http://example.com/moviestreet.club这种带域名关键词的外部链接被误判成内部链接的情况

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.15 07:30:59