Android WebView跳转浏览器问题:如何在WebView内加载Twitch链接
解决WebView跳转至浏览器而非内部加载的问题
嘿,这个问题我之前也碰到过!原因很简单:WebView默认会把外部URL请求交给系统浏览器处理,所以你需要自定义一个WebViewClient来拦截这个行为,让WebView自己加载链接。
你只需要修改你的TwitchWebView页面代码,添加以下关键配置:
- 先配置WebView的基础设置(比如启用JavaScript,Twitch页面大概率需要这个)
- 设置自定义的
WebViewClient,重写shouldOverrideUrlLoading方法,让WebView自行加载URL
修改后的完整代码如下:
protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_twitch_web_view); wv = (WebView) findViewById(R.id.twitch_web_view); // 1. 配置WebView基础设置 WebSettings webSettings = wv.getSettings(); webSettings.setJavaScriptEnabled(true); // 启用JS,Twitch页面需要 webSettings.setDomStorageEnabled(true); // 启用DOM存储,适配部分页面特性 webSettings.setLoadWithOverviewMode(true); webSettings.setUseWideViewPort(true); // 2. 设置自定义WebViewClient,拦截URL跳转 wv.setWebViewClient(new WebViewClient() { @Override public boolean shouldOverrideUrlLoading(WebView view, WebResourceRequest request) { // 适配Android 7.0及以上版本 view.loadUrl(request.getUrl().toString()); return true; } // 兼容Android 7.0以下版本 @Override public boolean shouldOverrideUrlLoading(WebView view, String url) { view.loadUrl(url); return true; } }); Bundle bundle = getIntent().getExtras(); String url = bundle.getString("url"); if (url!= null){ Toast.makeText(this, url, Toast.LENGTH_SHORT).show(); wv.loadUrl(url); } }
另外别忘了检查你的AndroidManifest.xml里是否添加了网络权限,没有的话加上这一行:
<uses-permission android:name="android.permission.INTERNET" />
这样设置之后,WebView就会在内部加载Twitch的链接,而不会跳转到系统浏览器了。
内容的提问来源于stack exchange,提问作者Sadegh
相关产品推荐
相关产品推荐

