之前做过很多有关安卓的对接,其中就需要调用Android原生的方法,或者接入的SDK需要调用Android原生的东西,每次都需要重新写一个类或者方法去处理这些,前一阵子我整理了一下,写了个工具类,专门用来处理Unity3D调用安卓原生情况,废话不多说,下面就把代码贴出来。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 |
using System; using UnityEngine; namespace Tools.AndroidClass { public static class AndroidClass { public static AndroidJavaObject JavaObject() { return new AndroidJavaClass("com.unity3d.player.UnityPlayer").GetStatic<AndroidJavaObject>("currentActivity"); } public static void CallJavaMethed(string methedName, params object[] args) { #if UNITY_ANDROID && !UNITY_EDITOR JavaObject().Call(methedName, args); #else #endif } public static T CallJavaMethed<T>(string methedName, params object[] args) { #if UNITY_ANDROID && !UNITY_EDITOR return (T)Convert.ChangeType(JavaObject().Call<T>(methedName,args), typeof(T)); #else return (T)Convert.ChangeType(null, typeof(T)); #endif } public static void CallJavaStaticMethed(string methedName, params object[] args) { #if UNITY_ANDROID && !UNITY_EDITOR JavaObject().CallStatic(methedName, args); #else #endif } public static T CallJavaStaticMethed<T>(string methedName, params object[] args) { #if UNITY_ANDROID && !UNITY_EDITOR return (T)Convert.ChangeType(JavaObject().CallStatic<T>(methedName,args), typeof(T)); #else return (T)Convert.ChangeType(null, typeof(T)); #endif } } } |
首先,我们要引用命名空间using Tools.AndroidClass;然后调用CallJavaMethed方法,第一个参数是,java方法的方法名,后面和可传任意多个参数,也可以有返回值。下面是使用方法。文章源自大腿Plus-https://www.zhaoshijun.com/archives/216
1 2 3 4 |
AndroidClass.CallJavaMethed("javaMethed", 1, true);//没有返回值的方法调用 int index1 = AndroidClass.CallJavaMethed<int>("javaMethed", 1, true);//有返回值的方法调用 AndroidClass.CallJavaStaticMethed("javaMethed", 1, true);//没有返回值的静态方法调用 int index2 = AndroidClass.CallJavaStaticMethed<int>("javaMethed", 1, true);//有返回值的静态方法调用 |
上面的工具类里用到了泛型,可以返回任意类型的值,这个工具类,是我整理了好久,才整理到这个程度的,希望能对大家有帮助,这个也算是我自己写个一个小插件了。文章源自大腿Plus-https://www.zhaoshijun.com/archives/216 文章源自大腿Plus-https://www.zhaoshijun.com/archives/216
我的微信
微信扫一扫
![weinxin](https://www.zhaoshijun.com/wp-content/uploads/2021/12/wechat.png)
shijun_z
我的QQ
QQ扫一扫
![weinxin](https://www.zhaoshijun.com/wp-content/uploads/2023/11/qq.jpg)
846207670
评论