使用unity实现AndroidJavaClass
我有一个java对象,它获取一个侦听器对象作为参数。这个监听器应该实现某个java抽象类 我正试图阻止用java写这篇文章,因为我使用jar文件中的SDK,要从java文件调用jar文件,我需要创建一个包含这两个文件的jar文件(请参阅) 这个答案解释了我的错误,但没有给出解决方案。 我将尝试更详细地介绍: 我得到了Listener类(在jar文件中):使用unity实现AndroidJavaClass,java,unity3d,Java,Unity3d,我有一个java对象,它获取一个侦听器对象作为参数。这个监听器应该实现某个java抽象类 我正试图阻止用java写这篇文章,因为我使用jar文件中的SDK,要从java文件调用jar文件,我需要创建一个包含这两个文件的jar文件(请参阅) 这个答案解释了我的错误,但没有给出解决方案。 我将尝试更详细地介绍: 我得到了Listener类(在jar文件中): 公共抽象类AttachCallback{ 公共附件回调(); 公共连接(Sdk); } 我的c#代码当前是(并且不起作用): 公共类Att
公共抽象类AttachCallback{
公共附件回调();
公共连接(Sdk);
}
我的c#代码当前是(并且不起作用):
公共类AttachCallback:AndroidJavaProxy
{
public AttachCallback():base(“com.example.AttachCallback”)
{
}
公共连接(AndroidJavaObject sdk)
{
Debug.Log(“----附件----”);
}
}
目前,我得到java.lang.IllegalArgumentException:com.example.AttachCallback不是一个接口
那么,有没有办法做到这一点?
提前感谢,,
Chaim首先:读一下这个。Android Java代理只能实现接口。所以您应该用java创建接口。比如:
public interface IAttachable
{
public void onAttached(Sdk sdk);
}
public void AddAttachToJava()
{
AttachCallback callback = new AttachCallback();
//Passing to activity, but you can do whatever you want
using (AndroidJavaClass javaClass = new AndroidJavaClass("your activity class name"))
{
using (AndroidJavaObject activity = javaClass.GetStatic<AndroidJavaObject>("mContext"))
{
activity.Call("attachUnityCallback", callback);
}
}
}
在AttachCallback类中,可以添加如下接口:
public abstract class AttachCallback implements IAttachable {
public IAttachable unityCallback;
public void onAttached(String sdk)
{
unityCallback.onAttached(sdk);
}
}
然后在unity类中,创建JavaProxy
public class AttachCallback : AndroidJavaProxy
{
public AttachCallback() : base("com.example.IAttachable")
{
}
public void onAttached(AndroidJavaObject sdk)
{
Debug.Log("-----Attached------");
}
}
要连接Unity代理,应将AttachCallback传递给java,类似于:
public interface IAttachable
{
public void onAttached(Sdk sdk);
}
public void AddAttachToJava()
{
AttachCallback callback = new AttachCallback();
//Passing to activity, but you can do whatever you want
using (AndroidJavaClass javaClass = new AndroidJavaClass("your activity class name"))
{
using (AndroidJavaObject activity = javaClass.GetStatic<AndroidJavaObject>("mContext"))
{
activity.Call("attachUnityCallback", callback);
}
}
}