Unity调用Android

你离开我真会死。 提交于 2019-12-03 07:19:37

1.Unity调用Android

根据unity用户手册,unity可以采用native code(c/c++),但是也提供了C#调用方法,本文对此进行简单讲解。

2.Unity获取android类

通过下述方法即可获取包com.ii.intentreceiver(可类比于C#命名空间)下的类MainActivity。继而可以调用MainActivity的静态方法getIntentResult。其返回值为string,如果无返回值,则直接调用CallStatic即可。

using (AndroidJavaClass mainActivityClass = new AndroidJavaClass("com.ii.intentreceiver.MainActivity"))
        {
            Debug.Log("IntentReceiver start catch infomation");
            try
            {
                result = mainActivityClass.CallStatic<string>("getIntentResult");
            }
            catch(Exception ex)
            {
                Debug.Log("IntentReceiver get result failed:" + ex.Message);
            }
        }

3.Unity获取android类的实例

通过下述方法即可获取包com.ii.intentreceiver(可类比于C#命名空间)下的类MainActivity的一个实例。继而可以调用MainActivity的方法getResult。其返回值为Android定义的一个实例,所以返回值为AndroidJavaObject类型,如果无返回值,则直接调用Call即可。

        try
        {
            using (AndroidJavaObject main = new AndroidJavaObject("com.ii.intentreceiver.MainActivity",null))
            {
                intentJavaObject = main.Get<AndroidJavaObject>("getResult");
            }
        }
        catch(AndroidJavaException ex)
        {
            Debug.Log("Exception while connecting to the Activity:" + ex.ToString());
            return null;
        }

3.Unity获取Unity的Activity

即可获取unity的currentActivity

    private static string unityPlayerClass = "com.unity3d.player.UnityPlayer";
    public static AndroidJavaObject GetActivity()
    {
        AndroidJavaClass jc = new AndroidJavaClass(unityPlayerClass);
        if (jc == null)
        {
            Debug.LogErrorFormat("Failed to get Unity Player class, {0}", unityPlayerClass);
            return null;
        }
        AndroidJavaObject activity = jc.GetStatic<AndroidJavaObject>("currentActivity");
        if (activity == null)
        {
            Debug.LogError("Failed to obtain Android Activity from Unity Player class.");
            return null;
        }
        return activity;
    }
标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!