本例实现了html中点击按钮显示一个Toast,在Android studio2.2.2测试通过
布局文件:
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/activity_main"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
tools:context="com.future.login.MainActivity">
<WebView
android:layout_width="match_parent"
android:layout_height="match_parent"
android:id="@+id/wb" />
</RelativeLayout>
html代码:
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Android测试网页</title>
<script language="JavaScript" type="text/javascript">
function showToast(){
window.myTosat.showMessage();
}
</script>
</head>
<body>
<input name="btn" type="button" onClick="showToast()" value="点我提示" />
</body>
</html>
主函数
public class MainActivity extends AppCompatActivity { private WebView wb; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); wb=(WebView)findViewById(R.id.wb); wb.getSettings().setJavaScriptEnabled(true); wb.addJavascriptInterface(new myToast(),"myTosat"); wb.loadUrl("file:///android_asset/index.html"); } public class myToast { @JavascriptInterface public void showMessage(){ Toast.makeText(getApplicationContext(),"你点我了",Toast.LENGTH_SHORT ).show(); } } }以上注意的是:
(1)android studio没有assets文件需要在Project-->app-->src-->main文件下建立一个assets文件夹,然后把index.html放进去,别把文件夹命名为asset否则出错
(2)wb.loadUrl("file:///android_asset/index.html");别写成wb.loadUrl("file:///android_assets/index.html");这样也是错的,所以特别注意什么时候用assets什么时候用asset
(3)调用的方法上加
@JavascriptInterface
不加没反应