美文网首页
h5-app交互

h5-app交互

作者: 蛋壳不讲武德 | 来源:发表于2019-11-21 12:04 被阅读0次

1.Android交互

Android调用JS的方法有2种:

(1)通过WebView的loadUrl()

// 调用js中的函数:jsFun(msg)

webView.loadUrl("javascript:jsFun('" + msg + "')"); 

对应的js方法

function showInfoFromJava(){

document.getElementById("p").innerHTML="Java成功调的JS方法";

}

(2)通过WebView的evaluateJavascript()

mWebView.evaluateJavascript("javascript:callJS()", new ValueCallback() {

@Override

public void onReceiveValue(String value) {

//此处为 js 返回的结果

}

});

}

  a)、比第一种方法效率更高、使用更简洁,因为该方法的执行不会使页面刷新,而第一种方法(loadUrl )的执行则会。

  b)、Android 4.4 后才可使用 

对应的js方法

function sum(a,b){

returna+b;

}

js调用Android本地java方法

js代码

function jsJava(){

        //调用java的方法,顶级对象,java方法

        //可以直接访问JSTest,这是因为JSTest挂载到js的window对象下了

        JSTest.showToast("我是被JS执行的Android代码");

    }

Android代码

//java与js回调,自定义方法

        //1.java调用js

        //2.js调用java

        //首先java暴露接口,供js调用

        /**

         * obj:暴露的要调用的对象

         * interfaceName:对象的映射名称 ,object的对象名,在js中可以直接调用

         * 在html的js中:JSTest.showToast(msg)

         * 可以直接访问JSTest,这是因为JSTest挂载到js的window对象下了

         */

        webView.addJavascriptInterface(newObject() {

            //定义要调用的方法

            //msg由js调用的时候传递

            @JavascriptInterface

            publicvoidshowToast(String msg) {

                Toast.makeText(getApplicationContext(),

                        msg, Toast.LENGTH_SHORT).show();

            }

        }, "JSTest");

(一)Android端调用H5页面

在Android端主要使用WebView来进行网页的加载,设置属性

// 获取WebSetting对象

WebSettings webSettings = webview.getSettings();

// 设置支持javascript

webSettings.setJavaScriptEnabled(true);

// 将Android里面定义的类对象AndroidJs暴露给javascript

webview.addJavascriptInterface(newAndroidJs(MainActivity.this),"AndroidJs");

调用方式:其中doAlert为H5页面的方法

webview.loadUrl("javascript:doAlert()");

(二)H5端调用Android页面

(1)

Android端代码:

publicclass AndroidJs {

    private Context mContext;

    public AndroidJs(Context context) {

        this.mContext = context;

    }

    @JavascriptInterface

    publicvoid showList() {

        new AlertDialog.Builder(mContext)

                .setTitle("图书列表")

                .setIcon(R.mipmap.ic_launcher)

                .setItems(

                        newString[]{"疯狂java讲义","疯狂Android讲义",

                                "轻量级java EE开发"},null)

                .setPositiveButton("确定",null).create().show();

    }

    @JavascriptInterface

    publicvoid showToast() {

        Toast.makeText(mContext, "hello", Toast.LENGTH_LONG).show();

    }

}

这里面的方法必须是共有的,类名与标识保持一致;

2.ios交互(谁调用谁?)

IOS 和 H5交互从根本上可以分为两种方式:

1. 使用UIWebView   

2.使用React框架

H5调用iOS

//window.webkit.messageHandlers. Share.postMessage(null)

iOS调用H5

//[self.webView evaluateJavaScript:@"show()"completionHandler:^(id _Nullable //response,NSError*_Nullable error){//TODO}];

//show()就是JS写的方法

相关文章

  • h5-app交互

    1.Android交互 Android调用JS的方法有2种: (1)通过WebView的loadUrl() // ...

  • H5-APP交互需要提供的方法记录

    一. APP需要处理事项 1. 设置WebView的UserAgent Android以及iOS需要在WebVie...

  • 玩Android客户端(uni-app版)

    前言 最近手上项目已完成,在等待验收阶段,个人有空闲时间,领导安排我们学习H5-App开发,为将来的项目做准备。在...

  • H5-APP在企业系统中的架构应用

    喜欢从业的专注,七分学习的态度。 概述 H5-APP:场景提出是应对当前企业系统中面临的主要问题而提出来的。原生A...

  • 首先引入交互函数 使用交互函数进行交互

  • 关于交互的思考

    在做交互之前,个人觉得有必要对交互进行些许总结,以明确三个问题:交互是什么?为什么要做交互?怎么做交互? 交互是什...

  • Windows下从零开始学习nodejs4.X+express4

    nodejs交互环境 nodejs交互环境简称 : REPL类似于Python的交互环境, nodejs的交互环境...

  • 我们要做个官网

    产品:我们要做个官网。 交互:好啊,好啊, 交互:需求是什么? 产品:刚才的就是啊。 交互:。。。。。。 交互:能...

  • 交互设计

    交互设计中有个预设用途原则,要让用户一看见它就知道如何使用。 动效的交互过程可以拆分为交互对象+交互行为+交互反馈...

  • I/O交互,web交互(8.10)

    I/O交互 终端交互使用

网友评论

      本文标题:h5-app交互

      本文链接:https://www.haomeiwen.com/subject/njgzictx.html