131 lines
3.8 KiB
C#
131 lines
3.8 KiB
C#
using System;
|
|
using System.Reflection;
|
|
|
|
namespace UnityEngine
|
|
{
|
|
// Token: 0x020003AF RID: 943
|
|
public class AndroidJavaProxy
|
|
{
|
|
// Token: 0x0600370C RID: 14092 RVA: 0x0005B89C File Offset: 0x00059A9C
|
|
public AndroidJavaProxy(string javaInterface)
|
|
: this(new AndroidJavaClass(javaInterface))
|
|
{
|
|
}
|
|
|
|
// Token: 0x0600370D RID: 14093 RVA: 0x0005B8AC File Offset: 0x00059AAC
|
|
public AndroidJavaProxy(AndroidJavaClass javaInterface)
|
|
{
|
|
this.javaInterface = javaInterface;
|
|
}
|
|
|
|
// Token: 0x0600370E RID: 14094 RVA: 0x0005B8BC File Offset: 0x00059ABC
|
|
public virtual AndroidJavaObject Invoke(string methodName, object[] args)
|
|
{
|
|
Exception ex = null;
|
|
BindingFlags bindingFlags = BindingFlags.Instance | BindingFlags.Static | BindingFlags.Public | BindingFlags.NonPublic;
|
|
Type[] array = new Type[args.Length];
|
|
for (int i = 0; i < args.Length; i++)
|
|
{
|
|
array[i] = ((args[i] != null) ? args[i].GetType() : typeof(AndroidJavaObject));
|
|
}
|
|
try
|
|
{
|
|
MethodInfo method = base.GetType().GetMethod(methodName, bindingFlags, null, array, null);
|
|
if (method != null)
|
|
{
|
|
return _AndroidJNIHelper.Box(method.Invoke(this, args));
|
|
}
|
|
}
|
|
catch (TargetInvocationException ex2)
|
|
{
|
|
ex = ex2.InnerException;
|
|
}
|
|
catch (Exception ex3)
|
|
{
|
|
ex = ex3;
|
|
}
|
|
string[] array2 = new string[args.Length];
|
|
for (int j = 0; j < array.Length; j++)
|
|
{
|
|
array2[j] = array[j].ToString();
|
|
}
|
|
if (ex != null)
|
|
{
|
|
throw new TargetInvocationException(string.Concat(new object[]
|
|
{
|
|
base.GetType(),
|
|
".",
|
|
methodName,
|
|
"(",
|
|
string.Join(",", array2),
|
|
")"
|
|
}), ex);
|
|
}
|
|
throw new Exception(string.Concat(new object[]
|
|
{
|
|
"No such proxy method: ",
|
|
base.GetType(),
|
|
".",
|
|
methodName,
|
|
"(",
|
|
string.Join(",", array2),
|
|
")"
|
|
}));
|
|
}
|
|
|
|
// Token: 0x0600370F RID: 14095 RVA: 0x0005BA48 File Offset: 0x00059C48
|
|
public virtual AndroidJavaObject Invoke(string methodName, AndroidJavaObject[] javaArgs)
|
|
{
|
|
object[] array = new object[javaArgs.Length];
|
|
for (int i = 0; i < javaArgs.Length; i++)
|
|
{
|
|
array[i] = _AndroidJNIHelper.Unbox(javaArgs[i]);
|
|
}
|
|
return this.Invoke(methodName, array);
|
|
}
|
|
|
|
// Token: 0x06003710 RID: 14096 RVA: 0x0005BA90 File Offset: 0x00059C90
|
|
public virtual bool equals(AndroidJavaObject obj)
|
|
{
|
|
IntPtr intPtr = ((obj != null) ? obj.GetRawObject() : IntPtr.Zero);
|
|
return AndroidJNI.IsSameObject(this.GetProxy().GetRawObject(), intPtr);
|
|
}
|
|
|
|
// Token: 0x06003711 RID: 14097 RVA: 0x0005BAD0 File Offset: 0x00059CD0
|
|
public virtual int hashCode()
|
|
{
|
|
jvalue[] array = new jvalue[1];
|
|
array[0].l = this.GetProxy().GetRawObject();
|
|
return AndroidJNISafe.CallStaticIntMethod(AndroidJavaProxy.s_JavaLangSystemClass, AndroidJavaProxy.s_HashCodeMethodID, array);
|
|
}
|
|
|
|
// Token: 0x06003712 RID: 14098 RVA: 0x0005BB18 File Offset: 0x00059D18
|
|
public virtual string toString()
|
|
{
|
|
return this.ToString() + " <c# proxy java object>";
|
|
}
|
|
|
|
// Token: 0x06003713 RID: 14099 RVA: 0x0005BB40 File Offset: 0x00059D40
|
|
internal AndroidJavaObject GetProxy()
|
|
{
|
|
if (this.proxyObject == null)
|
|
{
|
|
this.proxyObject = AndroidJavaObject.AndroidJavaObjectDeleteLocalRef(AndroidJNIHelper.CreateJavaProxy(this));
|
|
}
|
|
return this.proxyObject;
|
|
}
|
|
|
|
// Token: 0x04000C8A RID: 3210
|
|
public readonly AndroidJavaClass javaInterface;
|
|
|
|
// Token: 0x04000C8B RID: 3211
|
|
internal AndroidJavaObject proxyObject;
|
|
|
|
// Token: 0x04000C8C RID: 3212
|
|
private static readonly GlobalJavaObjectRef s_JavaLangSystemClass = new GlobalJavaObjectRef(AndroidJNISafe.FindClass("java/lang/System"));
|
|
|
|
// Token: 0x04000C8D RID: 3213
|
|
private static readonly IntPtr s_HashCodeMethodID = AndroidJNIHelper.GetMethodID(AndroidJavaProxy.s_JavaLangSystemClass, "identityHashCode", "(Ljava/lang/Object;)I", true);
|
|
}
|
|
}
|