绑定到Xamarin绑定Java库中的服务

本文关键字:绑定 服务 Java Xamarin | 更新日期: 2023-09-27 18:00:36

我有一个导入的Java库,它是我的解决方案中的"Bindings Library"项目。

我正试图从解决方案中的另一个项目绑定到第三方库中的服务。

第三方库文档[在java中]非常直接:

在Activity类中声明MeshService对象:

private MeshService mService;

绑定到onCreate:内的服务

Intent bindIntent = new Intent(this, MeshService.class);
bindService(bindIntent, mServiceConnection, Context.BIND_AUTO_CREATE);

当我尝试使用以下代码绑定时:

Intent bindIntent = new Intent(this, typeof(MeshService));
mServiceConnection = new ServiceConnection(this);
BindService(bindIntent, mServiceConnection, Bind.AutoCreate);

的第一行出现异常

  Java.Lang.ClassNotFoundException: Didn't find class   "com.csr.mesh.MeshService" on path:DexPathList[[zip file "/data/app/DeakoMesh.Android-1/base.apk"],nativeLibraryDirectories=[/data/app/DeakoMesh.Android-1/lib/arm, /system/lib, /vendor/lib, system/vendor/lib, system/vendor/lib/egl, system/lib/hw]] at dalvik.system.BaseDexClassLoader.findClass(BaseDexClassLoader.java:56)

当我试图使用另一段代码进行绑定时:

Intent bindIntent = new Intent("com.csr.mesh.MeshService");
mServiceConnection = new ServiceConnection(this);
BindService(bindIntent, mServiceConnection, Bind.AutoCreate);

没有例外,但服务绑定从未发生,mServiceConnection为null。(请参阅下面的代码)

问题:如何绑定到另一个项目中的服务?我应该提供什么上下文而不是"this"?

Intent bindIntent = new Intent(this, typeof(MeshService));

mServiceConnection的代码:

class ServiceConnection : Java.Lang.Object, IServiceConnection
{
MainActivity activity;
        public ServiceConnection(MainActivity activity)
        {
            this.activity = activity;
        }
        public void OnServiceConnected(ComponentName name, IBinder service)
        {
            activity.meshService = ((MeshService.LocalBinder)service).Service;                
            activity.isBound = true;
        }
        public void OnServiceDisconnected(ComponentName name)
        {
            activity.meshService = null;
            activity.isBound = false;
        }
    }

非常感谢您提前提供任何提示!

也在xamarin论坛上发布如下:https://forums.xamarin.com/discussion/44647/binding-to-a-service-that-lives-in-a-bound-java-library?new=1

绑定到Xamarin绑定Java库中的服务

您与库的绑定似乎无法正常工作,否则您应该能够看到自动执行建议,不会出现此类错误。签出此文章。下面详细解释了如何绑定安卓库