注:要在Manifest.xml注册访问网络权限
<!-- 访问网络权限 -->
<uses-permission android:name="android.permission.INTERNET" />
1,建立assets文件夹
注: 原来我们在使用Eclipse时,assets文件夹会在res/下面,可是在android studio中你在res/下面建立完之后,根本就不认。android studio把assets文件夹放到了和java,res文件夹同级的地方
2,在activity_search.xml布局文件中建立WebView用于显示html文件
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
tools:context="com.sdlj.vehiclerepair.activity.SearchActivity">
<WebView
android:id="@+id/wv_search_result"
android:layout_width="match_parent"
android:layout_height="match_parent"/>
</LinearLayout>
3,在assets文件夹下建立一个demo1.html文件
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="content-type" content="demo1.html" charset="utf-8">
<title>JS调用Android</title>
</head>
<body>
<!--注意此处的myObj是Android暴露出来的对象-->
<input type="button" value="打招呼" onclick="myObj.showToast('孙悟空')">
<input type="button" value="图书列表" onclick="myObj.showList()">
<script>
var myObj={
showList:function() {
alert(1)
},
showToast:function(a) {
alert(a)
}
}
</script>
</body>
</html>
4,在Activity中调用
public class SearchActivity extends AppCompatActivity {
public static final String TAG = "ZCN_SearchActivity";
private WebView wvSearchResult;
WebSettings webSettings;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_search);
initView();
}
@SuppressLint( "JavascriptInterface")
private void initView() {
wvSearchResult = (WebView)findViewById(R.id.wv_search_result);
wvSearchResult.loadUrl("file:///android_asset/demo1.html");
//获取Webview的设置对象
webSettings = wvSearchResult.getSettings();
//开启JavaScript调用
webSettings.setJavaScriptEnabled(true);
//将MyObject对象暴露给JavaScript脚本
//这样在demo2.html页面中的JavaScript也可以通过myObj来调用MyObject的方法
//wvSearchResult.addJavascriptInterface(new MyObject(this),"myObj");
//这个方法如果不设置的话,网页原生弹出框响应不了
wvSearchResult.setWebChromeClient(new WebChromeClient()
{
@Override
public boolean onJsAlert(WebView view, String url, String message,
JsResult result)
{
// TODO Auto-generated method stub
return super.onJsAlert(view, url, message, result);
}
});
}
}