C# 从Unity 3d获取applicationContext

C# 从Unity 3d获取applicationContext,c#,android,plugins,unity3d,C#,Android,Plugins,Unity3d,我正在为unity 3d编写一个android插件,我的问题是初始化时需要将applicationContext传递给一个方法。 因此,我的MyPlugin.cs如下所示 using UnityEngine; using System.Collections; public class MyPlugin : MonoBehaviour { void Awake () { Debug.Log ("awake"); Initialize (); } public static

我正在为unity 3d编写一个android插件,我的问题是初始化时需要将applicationContext传递给一个方法。 因此,我的
MyPlugin.cs
如下所示

using UnityEngine;
using System.Collections;

public class MyPlugin : MonoBehaviour {

void Awake () {
    Debug.Log ("awake");
    Initialize ();
}

public static void Initialize()
{
    AndroidJavaClass playerClass = new AndroidJavaClass("com.unity3d.player.UnityPlayer");
    AndroidJavaObject activity = playerClass.GetStatic<AndroidJavaObject>("currentActivity");
    AndroidJavaClass pluginClass = new AndroidJavaClass("com.mycompany.product.UnityPlugin");
    pluginClass.CallStatic("initialize", new object[1] {activity});
}
}

我总是得到
NullPointerException
。从unity activities获取AppilcationContext的正确方法是什么?

首先,检查pluginClass是否为空

if(pluginClass == null) Debug.Log("plugin class is null");
如果是,请确保您正在使用正确的字符串参数创建新的AndroidJavaClass

接下来,我不知道为什么要传递一个活动的数组,而不是只传递Unity的上下文。试着这样做:

AndroidJavaClass unityPlayer = new AndroidJavaClass("com.unity3d.player.UnityPlayer");
AndroidJavaObject activity = unityPlayer.GetStatic<AndroidJavaObject>("currentActivity");
AndroidJavaObject context = activity.Call<AndroidJavaObject>("getApplicationContext");
pluginClass.CallStatic("initialize", context);

MyApp的
MyApp
指的是什么?
AndroidJavaClass unityPlayer = new AndroidJavaClass("com.unity3d.player.UnityPlayer");
AndroidJavaObject activity = unityPlayer.GetStatic<AndroidJavaObject>("currentActivity");
AndroidJavaObject context = activity.Call<AndroidJavaObject>("getApplicationContext");
pluginClass.CallStatic("initialize", context);
public class UnityPlugin extends Plugin {
    static public void initialize (Context unityContext){
        try {
            MyApp.initialize(unityContext);
        } catch (NullPointerException e){
            Log.d("UnityPlugin", "Null PTR Exception");
            e.printStackTrace();
        }
    }
}