我的一个活动中有webview,应该在该页面的一部分内加载而不是打开浏览器。所以我使用了Web视图客户端。
该网址在移动浏览器和我的Chrome中打开。但是当我在应用程序中运行时,它总是显示“网页不可用”。正常“http://www.google.com”正在运作。我的URL是.asp文件,也包含http作为前缀。我不明白为什么会导致这个问题。我google了很多,但无法解决。
我的应用版本是Android 14.我在清单中也有互联网许可。
我的代码段如下:
public static void loadWebView(WebView wView, String url) {
wView.getSettings().setJavaScriptCanOpenWindowsAutomatically(true);
wView.getSettings().setBuiltInZoomControls(true);
wView.getSettings().setJavaScriptEnabled(true);
wView.getSettings().setSaveFormData(true);
wView.getSettings().setLoadsImagesAutomatically(true);
wView.getSettings().setBlockNetworkImage(false);
wView.getSettings().setDefaultTextEncodingName("UTF-8");
wView.setVerticalScrollBarEnabled(false);
wView.setHorizontalScrollBarEnabled(false);
wView.getSettings().setAllowFileAccess(true);
wView.getSettings().setPluginState(PluginState.ON);
wView.setWebChromeClient(new WebChromeClient());
MyClient wbClient = new MyClient();
wView.setWebViewClient(wbClient);
if(url.endsWith(".pdf") || url.endsWith(".PDF")) {
url = "http://docs.google.com/gview?embedded=true&url=" + url;
}
url.replace("http:", "https:");
wView.loadUrl(url);
}
private static class MyClient extends WebViewClient {
@Override
public boolean shouldOverrideUrlLoading(WebView view, String url) {
view.loadUrl(url);
return true;
}
@Override
public void onReceivedError(WebView view, int errorCode,
String description, String failingUrl) {
}
@Override
public void onPageStarted(WebView view, String url, Bitmap favicon) {
progressBar.setVisibility(View.VISIBLE);
}
@Override
public void onPageFinished(WebView view, String url) {
progressBar.setVisibility(View.INVISIBLE);
}
}
答案 0 :(得分:0)
url.replace("http:", "https:");
这一行可能是问题。
我在我的环境中运行你的代码:
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
WebView v = (WebView) findViewById(R.id.webView1);
loadWebView(v,"http://weblogs.asp.net/scottgu/archive/2007/02/26/tip-trick-url-rewriting-with-asp-net.aspx");
}
尝试按上述方式调用loadWebView() 并仔细检查您是否真的拥有清单文件中的权限,如下所示
<uses-permission android:name="android.permission.INTERNET"/>
希望它有所帮助。