WebView中响应JavaScript事件

注:要在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);
            }

        });
    }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值