Android 与 JavaScript 交互 支持的数据类型

更新日期: 2019-04-07 阅读: 4.3k 标签: Android

在Android混合开发中,WebView是中间件,承担着渲染网页的职责。

WebView的使用教程参见官网Carson_Ho的这篇博客。当需要Android原生与H5之间交互的时候,需要调用WebView的getSettings().setJavaScriptEnabled(true);以及webView.addJavascriptInterface(Js对象名,Java对象);

前者允许Android原生与H5之间的交互,后者将Java对象映射为JavaScript的对象。假设被映射为JavaScript对象的Java对象长的像这样:

/*
* 作为addJavascriptInterface()方法的第二个参数,该类将被映射为JavaScript对象
*/
public class MyJavaScriptObject{
        
        public void toastShort(){
                Toast.maskText(context,"吐个司",Toast.LENGTH_SHORT).show();
        }
        
        @JavascriptInterface
        public void toastLong(){
                Toast.maskText(context,"吐个司",Toast.LENGTH_LONG).show();
        }
        
        @JavascriptInterface
        public void question1(ClassA param){
                //use param
        }
        
        @JavascriptInterface
        public ClassB question2(){
                //return object of ClassB
                return new ClassB();
        }
}

则:

  1. toastShort()方法在JavaScript中不可用,因为该方法没有被@JavascriptInterface注解标记;

  2. ClassA只能是Java的内置类型或String,否则param为null、或为undefined(当用String接收时);

  3. ClassB只能是Java的内置类型或String,否则JavaScript接收的是{};

也就是说:

  1. JS调用Android原生方法,参数须是Java的内置类型:int、String等,若是JavaScript对象,需字符串化,否则Android无法正确接收;
  2. JS调用Android原生方法,返回值是内置类型:int、String等,JS能够正确接收。若是Java自定义类型,则JS接收不到正确数据
  3. JS可以通过Android原生方法的返回值获取内置类型的参数,如String
  4. 若需要互传复杂类型的对象,双方须以String对媒介,以各自语言的Json工具类进行相互转化;

参见:
https://stackoverflow.com/questions/2250917/passing-a-javascript-object-using-addjavascriptinterface-on-android


本文内容仅供个人学习、研究或参考使用,不构成任何形式的决策建议、专业指导或法律依据。未经授权,禁止任何单位或个人以商业售卖、虚假宣传、侵权传播等非学习研究目的使用本文内容。如需分享或转载,请保留原文来源信息,不得篡改、删减内容或侵犯相关权益。感谢您的理解与支持!

链接: https://fly63.com/article/detial/2730

使用Chrome开发者工具远程调试原生Android上的H5页面

Android4.4(KitKat)开始,使用Chrome开发者工具可以帮助我们在原生的Android应用中远程调试WebView网页内容。

如何使用点击超链接的方式打开Android手机上的应用

在Android应用的AndroidManifest.xml里加入如下的配置片段:然后在web页面里加入如下的标签在手机上打开web页面,点击超链接,就能自动打开Android应用了。

需要关注的5大Android开发技术

虽然编程环境每天都有新变化,但 Android 无疑是其中更新迭代最频繁的,每年甚至每个月都有新东西。本文介绍了 2020 年开发者最需要关注的 5 大 Android 开发技术。在众多 Android 开发团队参加的 Droidcon London 2019 大会上

Android权限大全 - Android Manifest 权限描述大全

Android Manifest是Android程序开发中控制各项功能权限的核心文件,该参考表详尽描述了Android Manifest各个参数项的名称与功能。是Android开发与学习必备的参考表,欢迎需要的朋友使用。

Android 如何编写垃圾代码 ?

人生得意须尽欢,莫使金樽空对月。 我们从小就有许多规则要求着做事思考,也常有人在耳边说应该这么做应该这么说。而自己内心最真实想法和观点慢慢都被磨灭,只留下了一副没有主见躯壳。

内容以共享、参考、研究为目的,不存在任何商业目的。其版权属原作者所有,如有侵权或违规,请与小编联系!情况属实本人将予以删除!