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