一、在加载网页时出现android.content.ActivityNotFoundException
通常我们在Activity中加载网页的时候是直接调用webview.load(url); ,但是当在当前的连接中要跳进另一个链接地址中不带有http或者https时,安卓就会显示一个错误的网页,如图1-1所示:
图 1-1
所以为了针对这一问题,我们在WebView中设置了一个过滤,如果不包含http或者https那么久加载系统自带的浏览器去加载这个路径,代码如下:
wv_main.setWebViewClient(new WebViewClient(){ @Override public boolean shouldOverrideUrlLoading(WebView view, String url) { if( url.startsWith("http:") || url.startsWith("https:") ) { return false; } Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse(url)); intent.setClassName("com.android.browser", "com.android.browser.BrowserActivity"); startActivity(intent); return true; } });但是问题来了,结果是这个链接显示的网页确实成功了,却开启了系统自带的浏览器加载,而且加载出来的是这样的结果:
所以针对这一情况,我最终选择不启用自带的浏览器直接去加载,结果就正确显示了,代码如下:
wv_main = (WebView) findViewById(R.id.wv_main); WebSettings webSettings = wv_main.getSettings(); webSettings.setJavaScriptEnabled(true); wv_main.setWebViewClient(new WebViewClient(){ @Override public boolean shouldOverrideUrlLoading(WebView view, String url) { if( url.startsWith("http:") || url.startsWith("https:") ) { return false; } // Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse(url)); // intent.setClassName("com.android.browser", "com.android.browser.BrowserActivity"); // startActivity(intent); return true; } }); wv_main.loadUrl("http://www.baidu.com");