WebView使用笔记:
1. 避免启动默认浏览器打开网页:
webView.setWebViewClient(new WebViewClient());
2. 开启JavaScript:
// 获取WebView的管理对象;
WebSettings webSettings = webView.getSettings();
// 设置JS可用:
webSettings.setJavaScriptEnabled(true);
3. 加载Url有两种(第二种不会有中文乱码的问题):
<1>:webView.load(String Url);
<2>:webView.loadDataWithBaseURL(String baseUrl,String data,String mimeType,String encoding,String histoyUrl)
4. 加载本地html文件(本地文件放在assets文件夹下):
webView.loadUrl("file:///android_asset/index.html");
5 设置支持缩放:
webSettings.setSupportZoom(true);
6 添加对外的接口:
webView.addJavascriptInterface(new MyObject(this),"myObj"); //这句可以使JavaScript通过myObj来调用MyObject类中的方法
示例代码:
一:编写Activity:
public class MainActivity extends AppCompatActivity {
private EditText et_url;
private WebView webView;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
et_url = (EditText) findViewById(R.id.url);
webView = (WebView) findViewById(R.id.webView);
// 避免启动默认浏览器打开网页
webView.setWebViewClient(new WebViewClient());
// 获取WebView的管理对象;
WebSettings webSettings = webView.getSettings();
// 设置JS可用
webSettings.setJavaScriptEnabled(true);
webView.addJavascriptInterface(new MyObject(this),"myObj");
//webView.loadDataWithBaseURL(null,getHTMLString(),"text/html","utf-8",null);
webView.loadUrl("file:///android_asset/index.html");
// 设置支持缩放
webSettings.setSupportZoom(true);
et_url.setOnEditorActionListener(new TextView.OnEditorActionListener() {
@Override
public boolean onEditorAction(TextView v, int actionId, KeyEvent event) {
if(actionId == EditorInfo.IME_ACTION_SEARCH)
{
String url = et_url.getText().toString();
webView.loadUrl(url);
return true;
}
return false;
}
});
}
private String getHTMLString()
{
StringBuffer sb = new StringBuffer();
sb.append("<html>");
sb.append("<head>");
sb.append("<title>欢迎你小伙子</title>");
sb.append("</head>");
sb.append("<body>");
sb.append("<h2>Android Studio API</h2>");
sb.append("</body>");
sb.append("</html>");
return sb.toString();
}
}
二:编写MyObject类:
public class MyObject {
private Context mContext;
public MyObject(Context context)
{
this.mContext = context;
}
// 该方法会暴露给Javascript调用
@JavascriptInterface
public void showToast(String name){
Toast.makeText(mContext, name+"你好啊!", Toast.LENGTH_SHORT).show();
}
@JavascriptInterface
public void showList(){
new AlertDialog.Builder(mContext)
.setTitle("无限火力")
.setItems(new String[]{"牛头酋长", "黑暗之女"}, new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
Toast.makeText(mContext, which+"", Toast.LENGTH_SHORT).show();
}
})
.setPositiveButton("确定",null)
.setNegativeButton("关闭",null)
.create()
.show();
}
}
布局文件省略
当WebView加载完index.html点击列表出现如下效果: