常用的Js调Android方法,以及Android原生传值给Js

最近公司弄点这样的需求,我借此机会学习重新温故了一下,Js掉用android原生的方法 还有把值传回给js的方法

JavaScript掉Android原生

android代码

    private void initView() {
        mWebView = findViewById(R.id.web_x);
        WebSettings webSettings = mWebView.getSettings();

        // 设置与Js交互的权限
        webSettings.setJavaScriptEnabled(true);
        //设置编码
        //webSettings.setDefaultTextEncodingName("GBK");
        // 设置允许JS弹窗
       webSettings.setJavaScriptCanOpenWindowsAutomatically(true);
        //加载页面
	 mWebView.loadUrl("file:///android_asset/index.html");
        //TODO JS 调用Android原生
        mWebView.addJavascriptInterface(new StartOne(), "test");       
    }

说明: new StartOne() 启动回调的方法, 这个test是启动 JavaScript回调原生方法的必不可少的,IOS则是不需要这个前缀的。

JavaScript代码

<script>
			function startSdk(){
				  test.startHome("启动SDK首页");
			}
</script>

test.startHome
startHome : JavaScript的方法名

android代码

 //进入主页
    public class StartOne{
        @JavascriptInterface
        public void startHome(final String message) {
            runOnUiThread(new Runnable() {
                @Override
                public void run() {
                    Log.e("MME", message );
                    startActivity(new Intent(HomeActivity.this, HomeActivity.class));
              
                }
            });
        }
    }

在android中@JavascriptInterface 下要以JavaScript的方法名命名android的方法名,不然js怎么知道它要调起哪里。

然后执行下看下效果
在这里插入图片描述
掉起后的页面
在这里插入图片描述

Android原生给JavaScript传值的方法有好多,我写个我常用的方法 =_=!

Android原生给JavaScript传值
js调起android原生,原生android处理一些业务逻辑之后,再把处理完的结果返回给js

android代码

   mWebView.loadUrl("javascript:WriteX('"+s+"')");

WriteX 是与js商定的或回传方法

JavaScript代码

<script>	
            function WriteX(res){
		        document.getElementById('signResult').value = res;
			}


</script>

js拿到值并回显

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值