中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

TS與JAVA相互調用通信(Android篇)

發布時間:2020-07-21 18:42:17 來源:網絡 閱讀:1144 作者:Aonaufly 欄目:開發技術

一 : TS篇

A :JS調用JAVA

    /**
     * 點擊按鈕
     * Click the button
     */
    private onButtonClick(e: egret.TouchEvent) {
        // this.textfield.text = "點擊了按鈕";
        console.log(`game button 點擊了 , 開始調用JAVA函數`);
        let $obj : Object = {
            "name" : "Aonaufly",
            "occupation" : "warrior"
        };
        window["WebViewJavascriptBridge"].callHandler(
            'JS2JAVA'
            , JSON.stringify($obj)
            , function(responseData) {
                // this.textfield.text = `enterGame 2 Android callback param :  ${responseData}`;
                console.log(`enterGame 2 Android callback param :  ${responseData}`);
            }
        );
    }

PS 參數
①,JAVA的方法(string類型), 此處我定義的是“JS2JAVA”
②,JS給JAVA傳遞的參數
③,回調函數,供JAVA調用,回調函數的參數responseData,由JAVA回調給JS使用

B : JS注冊方法供JAVA調用

    private connectWebViewJavascriptBridge( callback : Function ) : void {
        if (window["WebViewJavascriptBridge"]) {
            callback(window["WebViewJavascriptBridge"])
        } else {
            document.addEventListener(
                'WebViewJavascriptBridgeReady'
                , function() {
                    callback(window["WebViewJavascriptBridge"])
                },
                false
            );
        }
    }

    protected createGameScene(): void {

                        this.connectWebViewJavascriptBridge(function (bridge) {
                                bridge.init(function(message, responseCallback) {
                                        console.log('JS got a message', message);
                                        var data = {
                                                'Javascript Responds': '測試中文!'
                                        };

                                        if (responseCallback) {
                                                console.log('JS responding with', data);
                                                responseCallback(data);
                                        }
                                });

                                /// Java 調 JS
                                bridge.registerHandler("JAVA2JS", function(data, responseCallback) {
                                        if (responseCallback) {
                                                var responseData = "Javascript Says Right back aka!";
                                                // this.textfield1.text = JSON.stringify(data);
                                                console.log(JSON.stringify(data));
                                                responseCallback(responseData);
                                        }
                                });
                        })
        }

注意 :
“JAVA2JS” , 既是在TS端注冊了一個“JAVA2JS”的方法,供JAVA端來調用,
TS與JAVA相互調用通信(Android篇)

二 : JAVA篇

①,需要下載jsBridge類庫 : https://github.com/lzyzsd/JsBridge
②,需要獲得前端游戲的html地址 : http://www.xxx.com/index(比如)
TS與JAVA相互調用通信(Android篇)
重點:需要使用WebView控件
A : TS調用JAVA

        webView.registerHandler("JS2JAVA", new BridgeHandler() {

            @Override
            public void handler(String data, CallBackFunction function) {
//              Log.i(TAG, "handler = submitFromWeb, data from web = " + data);
                makeText(MainActivity.this, "handler = submitFromWeb, data from web = " + data, LENGTH_SHORT).show();
                function.onCallBack("submitFromWeb exe, response data 中文 from Java");
            }

        });

注意 , TS端和JAVA的方法名稱字符串一定要一致,此處用的是“JS2JAVA”
B:JAVA調用TS

    @Override
    public void onClick(View v) {
        if (button.equals(v)) {
            makeText(MainActivity.this, "JAVA調用JS ", LENGTH_SHORT).show();
            webView.callHandler("JAVA2JS", "data from Java", new CallBackFunction() {

                @Override
                public void onCallBack(String data) {//functionInJs
                    // TODO Auto-generated method stub
                    Log.i(TAG, "reponse data from js " + data);
                    makeText(MainActivity.this, "reponse data from js ", LENGTH_SHORT).show();
                }

            });
        }

    }

同樣的“JAVA2JS”方法名稱要一致。

TS與JAVA相互調用通信(Android篇)

TS與JAVA相互調用通信(Android篇)

附送IOS類庫地址 : https://github.com/wangjiaojiao77/WebViewJavascriptBridge

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

亚东县| 土默特右旗| 门源| 加查县| 海宁市| 泸定县| 富宁县| 昌宁县| 安远县| 阜南县| 江陵县| 呼伦贝尔市| 丽水市| 大足县| 博兴县| 金沙县| 临安市| 昭觉县| 白河县| 辽源市| 广丰县| 连州市| 水城县| 迭部县| 千阳县| 南安市| 北碚区| 札达县| 炎陵县| 鹤庆县| 岗巴县| 孟州市| 双柏县| 福贡县| 临洮县| 开化县| 静乐县| 喀喇沁旗| 鄂托克前旗| 鄂尔多斯市| 嘉义市|