Cocos creator 与 Android Studio方法互相调用并传参

Cocos creator


export enum NativeToCCMessage
{
    OnAfterInit = "OnAfterInit",
}
export class NativeHelper
{
    public static HasJSB():boolean
    {
        return CC_JSB;
    }

    /**
     * ```
     * ios 调用格式为 (类名,静态方法名:参数名1:参数名2:,参数1,参数2):返回值<number,boolean,string>
     * 例: JSBCallStaticMethod("IOSHelp", "PlayAudioWithName:andLoopCount:", audioName, 1);
     * 
     * android 调用格式为 (类的路径,静态方法名,参数和返回值字符串,参数1,参数2):返回值<number,boolean,string>
     * 例: JSBCallStaticMethod("com/android/AndroidHelp", "PlayAudio", "(Ljava/lang/String;I)V", audioName, 1);
     * ```
     * @param className 
     * @param methodName 
     * @param methodSignature 
     * @param parameters 
     */
    public static JSBCallStaticMethod(className: string, methodName: string, ...parameters: any):any
    {
        return CC_JSB && jsb.reflection.callStaticMethod.apply(null,arguments);
        
    }
    
    /**
     * 获取原生发送的消息,通过消息调用js方法
     * @param msg 
     * @param withParam 
     */
    public static GetNativeSendMsg(msg:string,withParam?:boolean):string
    {
        let param:string = withParam ? ",\`#param\`" : "";
        return "cc.director.emit(\'" + msg + "\'" + param + ");";
    }

}
class OC_ADErrorParam
{
    public errorCode:number;
}
let afterInit = (ocADError: string)=>
            {
                cc.director.off(NativeToCCMessage.OnAfterInit,afterInit,this);
                let param:OC_ADErrorParam = JSON.parse(ocADError);
                    this._isInitFinish = true;
            }

            cc.director.on(NativeToCCMessage.OnAfterInit,afterInit,this);
            let msg = NativeHelper.GetNativeSendMsg(NativeToCCMessage.OnAfterInit, true);
            NativeHelper.JSBCallStaticMethod(SDK
                ,"Init"
                ,"(Ljava/lang/String;)V"
                ,msg);

Android Studio

class OC_ADErrorParam
{
    public int errorCode;
}
    public void Init(String callStr)
    {
        _initCallStr = callStr;
        _saveAndLoadTool = new SaveAndLoadTool();
        Log.d("BingoSDK","====================Init接收到参数:" + callStr);
        OC_ADErrorParam oc = new OC_ADErrorParam();
        oc.errorCode = 1654321;
        String s = JSON.toJSON(oc).toString();
        s = _initCallStr.replace("#param", s);
        Cocos2dxJavascriptJavaBridge.evalString(s);
    }