Android Studio中实现本地html中js与java交互简单实例

来源:互联网 发布:能备份应用数据的软件 编辑:程序博客网 时间:2024/06/06 07:44

本例实现了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
不加没反应
        


原创粉丝点击