@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
WebView mWebView = (WebView) findViewById(R.id.webView);
mWebView.setWebViewClient(new WebViewClient(){
/**
* 当前网页跳转完成时
* @param view
* @param url 当前的网址
*/
@Override
public void onPageFinished(WebView view, String url) {
super.onPageFinished(view, url);
Log.e("当前网页",url);
}
});
mWebView.setWebChromeClient(new WebChromeClient(){
/**
* 网页的进度发生变化时
* @param view
* @param newProgress
*/
@Override
public void onProgressChanged(WebView view, int newProgress) {
super.onProgressChanged(view, newProgress);
Log.e("当前加载",newProgress+"%");
}
});
mWebView.getSettings().setJavaScriptEnabled(true);
mWebView.loadUrl("http://www.baidu.com");
}
下载文件
mWebView.setDownloadListener(new DownloadListener() {
@Override
public void onDownloadStart(String url, String userAgent,
String contentDisposition, String mimetype, long contentLength) {
if(url.endsWith(".apk")){
Uri uri = Uri.parse(url);
Intent intent = new Intent(Intent.ACTION_VIEW, uri);
startActivity(intent);
}
}
});
错误处理
mWebView.setWebViewClient(new WebViewClient(){
@Override
public void onReceivedError(WebView view, int errorCode, String description, String failingUrl) {
super.onReceivedError(view, errorCode, description, failingUrl);
}
});
提供方法供js调用
public class WebHost {
private Context context;
public WebHost(Context context){
this.context = context;
}
/**
* 要被JavaScript调用的方法
* 从Android4.2开始。 只有添加 @JavascriptInterface 声明的Java方法才可以被JavaScript调用
*/
@JavascriptInterface
public void testCall(){
Toast.makeText(context,"来自js的调用",Toast.LENGTH_SHORT).show();
}
}
mWebView.getSettings().setJavaScriptEnabled(true);
mWebView.addJavascriptInterface(new WebHost(MainActivity.this),"js" );
主动加载js方法
public void test(String number){
webView.loadUrl("javascript:javaCallJs("+"'"+number+"'"+")");
setContentView(webView);
}