【问题标题】:UNITY JNI android plugin GetApplicationContext()UNITY JNI android 插件 GetApplicationContext()
【发布时间】:2012-10-29 12:55:03
【问题描述】:

我正在使用 JNI 为 Unity Android 开发一个插件。我使用我的 Java 代码创建 .jar 文件,然后使用 c++ 桥创建 .so 文件。当我从 Unity 端调用我的库时,一切正常。所以,我的问题是,在我的 Java 代码的几个部分中,我需要访问主要活动 (UnityPlayer3d) 的上下文。我需要一个指向此活动的指针来调用函数 GetApplicationContext()。

我怎样才能得到这个指针?我考虑将 Unity 中的指针作为参数传递给我的 Java 类,但首先我必须在 Unity 端获取它。

【问题讨论】:

  • 请包含任何相关代码。向我们展示您的尝试
  • 这是我想从 Unity 端调用的函数示例。问题是我需要 Unity 创建的活动的上下文,而不是我使用 JNI (jobject) 在 c++ 文件中创建的对象的上下文。 public void StartPushNotification(){ airpush=new Airpush(this.getApplicationContext()); airpush.startPushNotification(false); }
  • @user1782945 你搞定了吗?开发此插件是否成功?

标签: android java-native-interface unity3d


【解决方案1】:

这里有一些代码来获取活动 JNI 样式:

var unityPlayerClass = new AndroidJavaClass("com.unity3d.player.UnityPlayer");
var unityActivity = unityPlayerClass.GetStatic<AndroidJavaObject>("currentActivity");

【讨论】:

    【解决方案2】:

    我认为你的逻辑是错误的,你不需要将 Context 指针从 Unity(C#) 传递给 Java,你可以在 Android Pluglin MainActivity 中获取 Context(这是你在帖子中提到的主要活动 (UnityPlayer3d) ) 直接如下:

    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        context = this.getApplicationContext();
    }
    

    然后,您可以在 JAVA 中操作上下文来做一些事情,而不是用 Unity(C#) 编写它 希望对您有所帮助。 :)

    【讨论】:

      猜你喜欢
      • 2015-07-23
      • 1970-01-01
      • 1970-01-01
      • 2015-02-10
      • 1970-01-01
      • 1970-01-01
      • 2016-02-18
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多