public static AndroidJavaObject Box(object obj)
{
if (obj == null)
{
return(null);
}
if (AndroidReflection.IsPrimitive(obj.GetType()))
{
if (obj is int)
{
return(new AndroidJavaObject("java.lang.Integer", (int)obj));
}
if (obj is bool)
{
return(new AndroidJavaObject("java.lang.Boolean", (bool)obj));
}
if (obj is byte)
{
return(new AndroidJavaObject("java.lang.Byte", (byte)obj));
}
if (obj is short)
{
return(new AndroidJavaObject("java.lang.Short", (short)obj));
}
if (obj is long)
{
return(new AndroidJavaObject("java.lang.Long", (long)obj));
}
if (obj is float)
{
return(new AndroidJavaObject("java.lang.Float", (float)obj));
}
if (obj is double)
{
return(new AndroidJavaObject("java.lang.Double", (double)obj));
}
if (obj is char)
{
return(new AndroidJavaObject("java.lang.Character", (char)obj));
}
throw new Exception("JNI; Unknown argument type '" + obj.GetType() + "'");
}
if (obj is string)
{
return(new AndroidJavaObject("java.lang.String", (string)obj));
}
if (obj is AndroidJavaClass)
{
return(new AndroidJavaObject(((AndroidJavaClass)obj).GetRawClass()));
}
if (obj is AndroidJavaObject)
{
return((AndroidJavaObject)obj);
}
if (obj is Array)
{
return(AndroidJavaObject.AndroidJavaObjectDeleteLocalRef(ConvertToJNIArray((Array)obj)));
}
if (obj is AndroidJavaProxy)
{
return(AndroidJavaObject.AndroidJavaObjectDeleteLocalRef(AndroidJNIHelper.CreateJavaProxy((AndroidJavaProxy)obj)));
}
if (obj is AndroidJavaRunnable)
{
return(AndroidJavaObject.AndroidJavaObjectDeleteLocalRef(AndroidJNIHelper.CreateJavaRunnable((AndroidJavaRunnable)obj)));
}
throw new Exception("JNI; Unknown argument type '" + obj.GetType() + "'");
}