当我加载网址时,它会显示一个选择浏览器的窗口。对于前者 - 如果我想打开" http://www.facebook.com/"然后它显示我选择chrome或默认浏览器的窗口。我无法理解为什么会这样。
实际上在下面的代码中如果我成功从服务器获取了网址,那么我隐藏了一个抱歉的图像并显示webview。否则我会显示webview并隐藏抱歉图像。
webView = (WebView) findViewById(R.id.webView);
webView.setVisibility(View.VISIBLE);
ImageView img = (ImageView) findViewById(R.id.image);
img.setVisibility(View.GONE);
webView.setInitialScale(1);
webView.getSettings().setJavaScriptEnabled(true);
webView.getSettings().setLoadWithOverviewMode(true);
webView.getSettings().setUseWideViewPort(true);
webView.setScrollBarStyle(WebView.SCROLLBARS_OUTSIDE_OVERLAY);
webView.setScrollbarFadingEnabled(false);
webView.loadUrl("http://www.facebook.com/");
答案 0 :(得分:3)
尝试添加此行
webView.setWebViewClient(new WebViewClient());
答案 1 :(得分:1)
像这样添加WebViewClient
public class myWebClient extends WebViewClient
{
@Override
public void onPageStarted(WebView view, String url, Bitmap favicon) {
// TODO Auto-generated method stub
super.onPageStarted(view, url, favicon);
}
@Override
public boolean shouldOverrideUrlLoading(WebView view, String url) {
// TODO Auto-generated method stub
view.loadUrl(url);
return true;
}
}
您应覆盖您的shouldOverrideUrlLoading()
方法。
在您的UI活动中添加此行
web.setWebViewClient(new myWebClient());
它将解决您的问题。希望它有所帮助!
答案 2 :(得分:0)
首先,用http
替换https
,然后按顺序执行此操作,首先需要创建一个扩展WebViewClient
类的新java类,并覆盖{{1像这样的方法:
onPageFinished
其次,只需将其添加到WebView:
public class CustomWebViewClient extends WebViewClient
{
@Override
public void onPageFinished(WebView view, String url) {
//https://www.facebook.com/dialog/permissions.request
//actually works for me, but I put the URL you say is coming up
//blank in there instead, whatever works for you:
if(url.startsWith("https://www.facebook.com/dialog/oauth")){
String redirectUrl = "http://www.yourdomain.com/MyApp/";
view.loadUrl(redirectUrl);
return;
}
super.onPageFinished(view, url);
}
}