我有一个带有webview的“NewsActivity”。当我从主要活动开始时,链接会在webview中正确打开,但由于某种原因,某些网址会导致webview打开,然后立即启动外部浏览器。检查调试控制台我没有发现webview抛出的任何异常或其他消息,因为无法处理该URL。 请注意,我不是在讨论webview加载网址/页面后点击的链接。 我也尝试在webview中激活javascript,但无济于事。 此外,这只发生在来自同一域的一些网址(特别是新闻网站;此外,我没有阻止网址或覆盖)。
以下是无法在网页视图中打开的其中一个网址:url_not_loaded
以下是调用“NewsActivity”
的代码 Intent intent = new Intent(this, NewsActivity.class);
intent.putExtra(MainActivity.EXTRA_MESSAGE, url);
startActivity(intent);
以下是“NewsActivity”中的代码
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_news);
Intent intent = getIntent();
String url = intent.getStringExtra(MainActivity.EXTRA_MESSAGE);
mWebview = (WebView) findViewById(R.id.newsv);
Log.d(MainActivity.LOG_TAG, "URL: " + url);
mWebview.loadUrl(url);
}
如果有人知道可能发生的事情或可能提出任何想法,我将不胜感激。 谢谢!
答案 0 :(得分:0)
您的网址可能有重定向。我遇到了类似的问题。
使用webview将其添加到您的活动中。
webView.setWebViewClient(new Callback());
在onCreate之外添加。
private class Callback extends WebViewClient{ //Helps to open in webview instead of browser
@Override
public boolean shouldOverrideUrlLoading(WebView view, String url) {
return (false);
}
}
答案 1 :(得分:0)
这不是错误。
您需要使用WebViewClient。
mWebView.setWebViewClient(new WebViewClient() {
@Override
public boolean shouldOverrideUrlLoading(WebView view, String url)
{
view.loadUrl(url);
System.out.println("hello");
return false;
}
});
//Toast.makeText(this, "", Toast.LENGTH_SHORT);
mWebView.loadUrl(url);
答案 2 :(得分:0)
您可以像这样设置newWebViewClient:
webView.setWebViewClient(new WebViewClient());
但更确切地说,你需要覆盖这样的shouldOverrideUrlLoading方法:
webView.setWebViewClient(new WebViewClient(){
@Override
public boolean shouldOverrideUrlLoading(WebView view, String url){
view.loadUrl(url);
return true;
}});