Unity調用安卓的兩種方法


總結的兩種方法,供參考。

 

方法一

(要將方法寫到UnityPlayerActivity 類下,不然調用不到):

 

 1 //獲得類
 2 
 3 AndroidJavaClass jc = new AndroidJavaClass("com.unity3d.player.UnityPlayer");
 4 
 5  
 6 
 7 //獲得java對象
 8 
 9 AndroidJavaObject jo = jc.GetStatic<AndroidJavaObject>("currentActivity");
10 
11  
12 
13 //執行方法
14 
15 jo.Call("Method",arg);
16 
17  

 

 

方法二:

 

 1     //JNI 新建一個線程
 2 
 3         AndroidJNI.AttachCurrentThread();
 4 
 5  
 6 
 7         //獲得類
 8 
 9         IntPtr cls = AndroidJNI.FindClass("com/unity3d/player/UnityPlayer");
10 
11         IntPtr fid = AndroidJNI.GetStaticFieldID(cls, "currentActivity", "Landroid/app/Activity;");
12 
13         IntPtr obj = AndroidJNI.GetStaticObjectField(cls, fid);
14 
15  
16 
17         //獲得類
18 
19         IntPtr cls_OurAppActitvityClass = AndroidJNI.FindClass("com/bodhi/TalkingBodhi");
20 
21  
22 
23         //獲得方法
24 
25         IntPtr enableMethod = AndroidJNI.GetMethodID(cls_OurAppActitvityClass, "EnableADs", "V");
26 
27  
28 
29         //如果方法存在,則執行
30 
31         if (AndroidJNI.IsInstanceOf(obj, cls_OurAppActitvityClass) != false) {
32 
33             jvalue[] myArray = new jvalue[1];
34 
35             AndroidJNI.CallVoidMethod(obj, enableMethod, myArray);
36 
37         }

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM