//通过Webview 创建出WebSettings
WebSettings settings = wv.getSettings();
//设置的WebView用户代理字符串
settings.setUserAgentString("");
//启用JavaScript
settings.setJavaScriptEnabled(true);
//启用插件
settings.setPluginState(WebSettings.PluginState.ON);
//让JavaScript自动打开窗口
settings.setJavaScriptCanOpenWindowsAutomatically(true);
//设置DOM存储API是否已启用
settings.setDomStorageEnabled(true);
//设置是否从网络web视图不应加载图像资源(通过http和https URI方案访问的资源)
settings.setBlockNetworkImage(false);
//套的WebView是否应使用其内置的缩放机制
settings.setBuiltInZoomControls(true);
//设置的WebView是否应该保存的表单数据
settings.setSaveFormData(true);
//这种方法在API层面18.保存密码中的WebView不会在将来的版本中支持已被否决
settings.setSavePassword(true);
//设置使用内置变焦机制,当web视图是否应显示在屏幕缩放控制
settings.setDisplayZoomControls(true);
//设置是否WebView中是否支持多个窗口
settings.setSupportMultipleWindows(true);
//设置的WebView是否需要用户手势媒体播放
settings.setMediaPlaybackRequiresUserGesture(true);
WebViewClient主要帮助WebView处理各种通知、请求事件;
wv.setWebViewClient(new MyWebViewClient());
public class MyWebViewClient extends WebViewClient{
private String TAG="MyWebViewClient";
/**
* shouldOverrideUrlLoading
* <p>
* 当加载的网页需要重定向的时候就会回调这个函数告知我们应用程序是否需要接管控制网页加载,如果应用程序接管,
*并且return true意味着主程序接管网页加载,如果返回false让webview自己处理。
* </p>
* 参数说明:
*
* @param view
* 接收WebViewClient的那个实例,前面看到webView.setWebViewClient(new
* MyAndroidWebViewClient()),即是这个webview。
* @param url
* 即将要被加载的url
* @return true 当前应用程序要自己处理这个url, 返回false则不处理。 注:"post"请求方式不会调用这个回调函数
*/
@Override
public boolean shouldOverrideUrlLoading(WebView view, String url) {
return false;
}
/**
* onPageStarted 当内核开始加载访问的url时,会通知应用程序,对每个main frame
* 这个函数只会被调用一次,页面包含iframe或者framesets 不会另外调用一次onPageStarted,
* 当网页内内嵌的frame 发生改变时也不会调用onPageStarted。
*
* 参数说明:
*
* @param view
* 接收WebViewClient的那个实例,前面看到webView.setWebViewClient(new
* MyAndroidWebViewClient()),即是这个webview。
* @param url
* 即将要被加载的url
* @param favicon
* 如果这个favicon已经存储在本地数据库中,则会返回这个网页的favicon,否则返回为null。
*/
@Override
public void onPageStarted(WebView view, String url, Bitmap favicon) {
loading.setVisibility(View.VISIBLE);
super.onPageStarted(view, url, favicon);
}
/**
* onLoadResource 通知应用程序WebView即将加载url 制定的资源
*
* 参数说明:
*
* @param view
* 接收WebViewClient的那个实例,前面看到webView.setWebViewClient(new
* MyAndroidWebViewClient()),即是这个webview。
* @param url
* 即将加载的url 资源
*/
@Override
public void onLoadResource(WebView view, String url) {
//Log.e(TAG,url);
if(url.contains("?url=")){//加载视频
playUrl=url.substring(url.indexOf("url=")+4);
}
super.onLoadResource(view,url);
}
@Override
public void onPageFinished(WebView view, String url) {
loading.setVisibility(View.GONE);
if(url.contains("")
||url.contains("")){
bt_full.setVisibility(View.VISIBLE);
}else {
bt_full.setVisibility(View.GONE);
}
super.onPageFinished(view, url);
}
@Override
public void onReceivedError(WebView view, WebResourceRequest request, WebResourceError error) {
Log.e(TAG,error.toString());
}
@Override
public void onReceivedHttpError(WebView view, WebResourceRequest request, WebResourceResponse errorResponse) {
Log.e(TAG,errorResponse.toString());
}
/**
* shouldInterceptRequest
* 通知应用程序内核即将加载url制定的资源,应用程序可以返回本地的资源提供给内核,若本地处理返回数据,内核不从网络上获取数据。
*
* 参数说明:
*
* @param view
* 接收WebViewClient的那个实例,前面看到webView.setWebViewClient(new
* MyAndroidWebViewClient()),即是这个webview。
* @param url
* raw url 制定的资源
* @return 返回WebResourceResponse包含数据对象,或者返回null
*/
@Nullable
@Override
public WebResourceResponse shouldInterceptRequest(WebView view, String url) {
return super.shouldInterceptRequest(view, url);
}
}
更多方法请参考他的博客