1. Android studio:代码
package org.cocos2dx.javascript;
public class AppActivity extends Cocos2dxActivity {
private static AppActivity app = null;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
if (!isTaskRoot()) {
return;
}
SDKWrapper.getInstance().init(this);
app=this;
}
/**
*
*
*/
public static void showVideoAd(final int type){
app.runOnUiThread(new Runnable() {
@Override
public void run() {
AlertDialog alertDialog = new AlertDialog.Builder(app).create();
alertDialog.setTitle("js调用安卓代码");
alertDialog.setMessage("调用方法showVideoAd成功"+type);
alertDialog.setButton("OK", new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int which) {
//一定要在GL线程中执行
app.runOnGLThread(new Runnable() {
@Override
public void run() {
String js="cc.find('Canvas/UIManager').getComponent(cc.Component).adsuccessShow("+type+");";
Cocos2dxJavascriptJavaBridge.evalString(js);
}
});
}
});
alertDialog.show();
}
});
}
}
----------
2. js代码:UIManager.js
cc.Class({
extends: cc.Component,
//此处省略一千行
//请求安卓
showAndroidAd(type) {
jsb.reflection.callStaticMethod("org/cocos2dx/javascript/AppActivity", "showVideoAd", "(I)V", type);
},
//接受安卓回调
adsuccessShow(type) {
cc.log("adsuccessShow-->", type);
}
//此处省略一千行
});
3.参考文档
官方原文:https://docs.cocos.com/creator/2.2/manual/zh/advanced-topics/java-reflection.html