protected void initView(Bundle savedInstanceState) {
if (getIntent() != null) {
String keyValue = getIntent().getStringExtra(UrlUtils.TYPE_KEY);
if (!TextUtils.isEmpty(keyValue) && keyValue.equals(UrlUtils.TYPE_VALUE)) {
iv_more.setVisibility(View.VISIBLE);
view_line.setVisibility(View.VISIBLE);
}
}
if (App.forumEntityList != null && App.forumEntityList.size() > 0 && App.forumEntityList.get(0) != null) {
if (!TextUtils.isEmpty(App.forumEntityList.get(0).getLink_url())) {
url = App.forumEntityList.get(0).getLink_url();
}
}
url="http://www.baidu.com/";
WebSettings webSettings = webview.getSettings();
//如果访问的页面中要与Javascript交互,则webview必须设置支持Javascript
webSettings.setJavaScriptEnabled(true);
//支持插件
//webSettings.setPluginsEnabled(true);
//设置自适应屏幕,两者合用
webSettings.setUseWideViewPort(true); //将图片调整到适合webview的大小
webSettings.setLoadWithOverviewMode(true); // 缩放至屏幕的大小
//缩放操作
webSettings.setSupportZoom(true); //支持缩放,默认为true。是下面那个的前提。
webSettings.setBuiltInZoomControls(true); //设置内置的缩放控件。若为false,则该WebView不可缩放
webSettings.setDisplayZoomControls(false); //隐藏原生的缩放控件
//其他细节操作
webSettings.setCacheMode(WebSettings.LOAD_CACHE_ELSE_NETWORK); //关闭webview中缓存
webSettings.setAppCacheEnabled(true);
//开启 DOM 存储功能
webSettings.setDomStorageEnabled(true);
webSettings.setAllowFileAccess(true); //设置可以访问文件
webSettings.setJavaScriptCanOpenWindowsAutomatically(true); //支持通过JS打开新窗口
webSettings.setLoadsImagesAutomatically(true); //支持自动加载图片
webSettings.setDefaultTextEncodingName("utf-8");//设置编码格式
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
CookieManager.getInstance().setAcceptThirdPartyCookies(webview, true); //如果大于21开启cookie管理
}
//不使用缓存:
// webSettings.setCacheMode(WebSettings.LOAD_NO_CACHE);
webview.setWebChromeClient(new WebChromeClient() {
@Override
public void onReceivedTitle(WebView view, String title) {
super.onReceivedTitle(view, title);
}
});
webview.setWebViewClient(new WebViewClient() {
@Override
public boolean shouldOverrideUrlLoading(WebView view, WebResourceRequest request) {
if(Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP){
String url = request.getUrl().toString();
openUrl(url);
return true;
}
return super.shouldOverrideUrlLoading(view, request);
}
@Override
public boolean shouldOverrideUrlLoading(WebView view, String url) {
openUrl(url);
return true;
// if( url.startsWith("http:") || url.startsWith("https:") ) {
// ForumActivity.this.url = url;
// return false;//返回false 意思是不拦截,让webview自己处理
// }else {
// // Otherwise allow the OS to handle things like tel, mailto, etc.
// Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse(url));
// startActivity( intent );
// return true;
// }
}
@Override
public void onPageStarted(WebView view, String url, Bitmap favicon) {
super.onPageStarted(view, url, favicon);
}
@Override
public void onPageFinished(WebView view, String url) {
super.onPageFinished(view, url);
}
@Override
public void onScaleChanged(WebView view, float oldScale, float newScale) {
super.onScaleChanged(view, oldScale, newScale);
}
});
webview.loadUrl(url);
ivPreVBack.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
scrollToFinishActivity();
}
});
}
private void openUrl(final String url) {
App.applicationHandler.post(new Runnable() {
@Override
public void run() {
try {
// "openmomeike://"
if (!url.startsWith("http://") || !url.startsWith("https://")) {
Uri uri = Uri.parse(url);
ForumActivity.this.startActivity(new Intent(Intent.ACTION_VIEW, uri));
} else {
openWeb(url);
}
} catch (Exception e) {
e.printStackTrace();
if (url.startsWith("openmomeike://")) {
} else {
}//openWeb(url);
}
}
});
}
private void openWeb(String url) {
Log.i(TAG, "openWeb: url="+url);
}
houldOverrideUrlLoading(WebView view, String url)的返回值决定了webview是否自动处理该url,也就是是否加载。当返回true时,由程序处理,当返回false时,webview会自己处理,也就是相当于自动执行了loadUrl方法
https://blog.youkuaiyun.com/barryyanggoing/article/details/51848907
https://blog.youkuaiyun.com/u013131445/article/details/70632852