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

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

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

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)
blank

相关推荐

  • MySQL数据类型

    MySQL数据类型

  • H3C交换机配置telnet

    H3C交换机配置telnet1、telnet配置方法(常用方法):&lt;H3C&gt;sysSystemView:returntoUserViewwithCtrl+Z.[H3C]telnetserverenable   //使能telnet服务[H3C]user-interfacevty0   //设置telnet[H3C-ui-vty0-4]authentication-modenone[H…

  • 获取UUID_js获取用户唯一标识

    获取UUID_js获取用户唯一标识需求:​ 很多时候我们会需要用到生成不重复的唯一标识的的功能,如数据库表中的主键等。实现:​ 使用UUID生成唯一、不重复的字符串。importjava.util.UUID;publicclassUUIDUtils{publicstaticStringgetUUID(){returnUUID.randomUUID().toString().replace(“-“,””);}}什么是UUID:​ UUID通用唯一识别码

  • MFC控件 — 进度条【案例】「建议收藏」

    MFC控件 — 进度条【案例】「建议收藏」打开游戏或者其他一些软件时,时常会看到刚开始时有一个进度条在加载,有点酷炫的感觉。对于MFC进度条的使用,下面用一个案例介绍一下。案例:进度条单步加载和自动连续加载步骤:1.按下图在对话框中添加一个进度条,一个编辑框,和3个按钮,并为进度条添加一个控件变量进度条变量:m_Progress2.在初始化函数中对进度条进行初始化,代码如下:BOOLCSpinDlg::OnInitDia…

  • C在线工具_c语言网页版在线运行

    C在线工具_c语言网页版在线运行http://tool.oschina.net/

  • date和calendar_Calendar类

    date和calendar_Calendar类时间和日期处理 在程序中,某个固定的时间代表的都是一个时间点,也就是一个时间的瞬间,例如2009年3月8日15点50分0秒,在实际的应用中,经常需要对于两个时间进行比较或计算时间之间的差值,这些功能在Java语言中都可以很方便的实现。 在Java语言中,时间的表达单位是毫秒。也就是说,Java语言中的时间处理可以精确到毫秒。 在Java语言中,表达时间的方式有两种: a、绝

发表回复

您的电子邮箱地址不会被公开。

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