unity调android 本人目前发现android主activity必须继承UnityPlayerActivity,unity才能通过   

AndroidJavaClass jc = new AndroidJavaClass("com.unity3d.player.UnityPlayer");

AndroidJavaObject   jo = jc.GetStatic("currentActivity");  jo.call("函数名")

或者

AndroidJavaClass jc = new AndroidJavaClass("包名+.主Activity");

jc.CallStatic("函数名");

unity调Android(一)中unity没法调用android 本文主要解决调用问题:

实现思路是通过activity切换调用的方式。受益于 雨凇momo教程 。让主activity继承UnityPlayerActivity,然后在主activity里通过 

Intent intent = new Intent(mContext,"子activity"+.class);
                    intent.putExtra("Activity", "Activity");
                    this.startActivity(intent);

以下主要实现代码:

public class SDKDemo extends UnityPlayerActivity{        Context mContext=null;    JoyActivity joyActivity;    @Override    public void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        mContext=this;        Intent intent = new Intent(mContext,JoyActivity.class);        intent.putExtra("JoyActivity", "JoyActivity");        this.startActivity(intent);     }        public void nativeInit() {        Log.e("nativeInit","nativeInit Enter");        joyActivity=new JoyActivity();        joyActivity.nativeInit();        Log.e("nativeInit","nativeInit End");    }public class JoyActivity extends Activity {        UnityPlayer unityPlayer;    // UnityPlayer.init() should be called before attaching the view to a layout.     // UnityPlayer.quit() should be the last thing called; it will terminate the process and not return.    protected void onCreate (Bundle savedInstanceState)    {        super.onCreate(savedInstanceState);                    setTheme(android.R.style.Theme_NoTitleBar_Fullscreen);                requestWindowFeature(Window.FEATURE_NO_TITLE);        mUnityPlayer = new UnityPlayer(this);        if (mUnityPlayer.getSettings ().getBoolean ("hide_status_bar", true))            getWindow ().setFlags (WindowManager.LayoutParams.FLAG_FULLSCREEN,                           WindowManager.LayoutParams.FLAG_FULLSCREEN);        int glesMode = mUnityPlayer.getSettings().getInt("gles_mode", 1);        boolean trueColor8888 = false;        mUnityPlayer.init(glesMode, trueColor8888);        View playerView = mUnityPlayer.getView();        setContentView(playerView);        playerView.requestFocus();        }以上代码 也可以参考 unity调android(一)中的方式    public void nativeInit () {        Log.e("nativeInit", "##########################");    }unity代码:void Start ()     {        jc = new AndroidJavaClass("com.unity3d.player.UnityPlayer");                jo = jc.GetStatic("currentActivity");        jo.Call("nativeInit");    }


更多相关文章

  1. android onTouch()与onTouchEvent()的区别
  2. android gallery相关操作
  3. Android:JNI
  4. Gradle DSL method not found: 'android()
  5. 详解 Android(安卓)的 Activity 组件
  6. Unity调用Android配置方法
  7. Android顶部工具栏和底部工具栏的简单实现代码
  8. Android(安卓)Power Management
  9. Android(安卓)如何获取keyboard和TP消息 分享

随机推荐

  1. Android(安卓)控件布局常用属性
  2. android 电容屏(三):驱动调试之驱动程序分析
  3. Android系统启动流程(2) —— 解析Zygote
  4. Android(安卓)自定义View自定义属性的声
  5. android 学习笔记(一):1 环境搭建
  6. android 的webview调用php服务器js , js
  7. Android控件布局常用属性
  8. Android(安卓)面试必备 - 线程
  9. Android(安卓)远程调试 JNI 实现 ( Androi
  10. Android(安卓)常用UI控件的一些属性设置(