H5 Web网页通过JS(JavaScript)脚本调用Android本地原生方法函数

H5 Web网页通过JS(JavaScript)脚本调用Android本地原生方法函数

假设现在Android原生代码中有一个本地函数:androidNativeSayHello(),打算提供给外部H5页面使用。
第一步,在Android原生代码中准备好提供给H5网页调用的本地原生函数:

import android.content.Context;
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.webkit.JavascriptInterface;
import android.webkit.WebSettings;
import android.webkit.WebView;

public class MainActivity extends AppCompatActivity {

    private WebView mWebView;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        mWebView = findViewById(R.id.webview);

        mWebView.loadUrl("file:///android_asset/web.html");

        WebSettings mWebSettings = mWebView.getSettings();

        //启用JavaScript。
        mWebSettings.setJavaScriptEnabled(true);
        mWebSettings.setUseWideViewPort(true);

        mWebSettings.setJavaScriptCanOpenWindowsAutomatically(true);

        mWebView.addJavascriptInterface(new MyJavaScriptInterface(this), "MyJSInterface");
    }

    private class MyJavaScriptInterface {
        private Context mContext;

        public MyJavaScriptInterface(Context context) {
            mContext = context;
        }

        //添加JS注解@JavascriptInterface。该Android原生的本地方法,供H5 Web网页调用。
        //该函数的访问属性必须是public。
        @JavascriptInterface
        public void androidNativeSayHello() {
            System.out.println("android native say 'hello , world !'");
        }
    }
}

注意此时在给WebView增加JS接口时候(addJavascriptInterface),定义的名字‘MyJSInterface’,该名字‘MyJSInterface’是H5 Web网页中的JS代码调用的‘句柄’。

第二步,直接在H5的JS中调用。
根据在Android原生代码中定义的句柄‘MyJSInterface’’直接调用Android原生的本地函数:

<html>
<body>

<script>
function showMsg()
{
    MyJSInterface.androidNativeSayHello();
}

</script>

<form>
    <input type="button"
           value="H5 Web网页调用Android原生本地方法"
           onclick="showMsg()"/>
</form>

</body>
</html>

 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

zhangphil

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值