2012-10-29 140 views
3

我正在爲使用JNI的Unity Android開發一個插件。我使用Java代碼創建了.jar文件,然後使用C++橋創建了.so文件。當我從Unity端調用我的庫時,一切正常。所以,我的問題是,在我的Java代碼的幾個部分中,我需要訪問主要活動(UnityPlayer3d)的上下文。我需要一個指向這個活動的指針來調用函數GetApplicationContext()。UNITY JNI android插件GetApplicationContext()

我該如何獲得這個指針?我想將Unity中的指針作爲參數傳遞給我的Java類,但首先我必須將它放在Unity一側。

+0

請包括任何相關的代碼。告訴我們你試過的東西 – Sheena

+0

這是一個我想從Unity端調用的函數的例子。問題是我需要Unity創建的活動的上下文,而不是使用JNI(jobject)在C++文件中創建的對象的上下文。 (){ public void StartPushNotification(){ \t airpush = new Airpush(this.getApplicationContext()); \t airpush.startPushNotification(false); } – user1782945

+0

@ user1782945你有這樣做嗎?開發這個插件的成功嗎? – QAMAR

回答

2

下面是一些代碼來獲取活動JNI風格:

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

我覺得你的邏輯是錯誤的,你不需要從Unity(C#)到Java通過上下文指針,可以獲取上下文在Android的Pluglin MainActivity(這是你在你的文章中提到的主要活動(UnityPlayer3d))直接如下:

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

然後,你可以操作的情況下做的東西在JAVA這一翻譯在Unity寫它的( C#) 希望它有幫助。 :)