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

常用的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拿到值并回显

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/2842.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 微信裂变推广_朋友圈转发送红包营销

    微信裂变推广_朋友圈转发送红包营销维信超级引流红包裂变游戏源码维信超级引流红包裂变游戏源码,H5拆红包源码强制分享朋友圈,可以强制分享两次朋友圈、三个群,分享成功后自动跳转到你的广告页面,访客点击返回跳转广告页面,可以强制分享两次朋友圈,三个群,分享成功后自动跳转到你的广告页面,访客点击返回跳转广告页面。2022超级热门引流红包裂变微信分享朋友圈广告游戏源码-PHP文档类资源-CSDN下载微信超级引流红包裂变游戏源码微信超级引流红包裂变游戏源码,H5拆红包源码强制分享朋友圈,可以更多下载资源、学习资料请访问CSDN下载频道.ht

    2026年1月19日
    4
  • Pytest(1)安装与入门「建议收藏」

    Pytest(1)安装与入门「建议收藏」pytest介绍pytest是python的一种单元测试框架,与python自带的unittest测试框架类似,但是比unittest框架使用起来更简洁,效率更高。根据pytest的官方网站介绍,它

    2022年7月31日
    5
  • Python append 函数[通俗易懂]

    Python append 函数[通俗易懂]pythonappend描述append函数可以在列表的末尾添加新的对象。函数无返回值,但是会修改列表。append语法list.append(object)名称 说明 备注list 待添加元素的列表 object 将要给列表中添加的对象 不可省略的参数append举例1.给列表中添加整数、浮点数和字符串:test=[‘Python’,‘C’,‘Java’]test.append(5)test.append(23.6)test.append(‘HTML’)print(t

    2022年6月16日
    91
  • springboot+mockito测试controller层遇到的问题

    springboot+mockito测试controller层遇到的问题

    2021年6月7日
    211
  • 08【Verilog实战】4bit移位寄存器设计与功能验证(附源码)[通俗易懂]

    08【Verilog实战】4bit移位寄存器设计与功能验证(附源码)[通俗易懂]一、Overview(1)Theory(2)Demand二、Interface三、Timeing四、DesignandFunctionalVerification(1)RTL(2)TestBench五、Result(1)行为级描述测试结果(2)结构级描述测试结果

    2022年7月16日
    17
  • Windows驱动程序开发语言「建议收藏」

    Windows驱动程序开发语言「建议收藏」Windows驱动程序和Win32应用程序一样,都是PE格式,所以说,只要某种语言的编译器能够编译出PE格式的二进制格式文件,并且能够设置驱动程序的入口地址,那么这种语言就可以用来开发Windows驱动程序,所以可以选择C,C++,甚至是Delphi开发。但是由于微软提供的DDK开发环境中的头文件和链接库都是只支持C,C++。因此,大部分时候Windows驱动程序都是用C/C++进行开发的

    2022年10月9日
    3

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号