c# - 绑定(bind)到位于 Xamarin 绑定(bind) Java 库中的服务

标签 c# android xamarin

我有一个导入的 Java 库,它是我解决方案中的“绑定(bind)库”项目。

我正在尝试从解决方案中的另一个项目绑定(bind)到第 3 方库中的服务。

第 3 方库文档 [在 java 中] 非常简单:

在Activity类中声明MeshService对象:

private MeshService mService;

绑定(bind)到 onCreate 中的服务:

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

当我尝试使用以下代码进行绑定(bind)时:

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)

当我尝试使用另一段代码进行绑定(bind)时:

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

没有异常(exception),但服务绑定(bind)永远不会发生并且 mServiceConnection 为 null。 (请看下面的代码)

问题: 如何绑定(bind)到另一个项目中的服务? 我应该提供什么上下文而不是“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

最佳答案

您的库绑定(bind)似乎无法正常工作,否则您应该能够看到自动完成建议并且不会出现此类错误。 检查这个 Article .这里详细解释了如何绑定(bind) Android 库

关于c# - 绑定(bind)到位于 Xamarin 绑定(bind) Java 库中的服务,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31146989/

相关文章:

从 List<T> 中删除重复项的 C# 方法

asp.net - Android 浏览器中 Google 可视化条形图 API 出现错误

java - 检查隐藏 wifi 网络的可用性

xaml - Xamarin XAML 条件样式

c# - 在 cookie 变量中分配字符串无法正常工作

c# - 在 asp.net 中使用隐藏代码在页面加载时显示弹出 div?

c# - 网格列和行长度上的 WPF 转换器仅在不使用 gridsplitter 时才有效

java - onPreExecute() 和 onPostExecute() 是在 UI 线程上执行还是在启动 AsyncTask 的线程上执行?

ios - 在 Xamarin iOS 的 UIActivityIndi​​catorView 中隐藏指示器

android - 在 XML 中的自定义 ScrollView 上膨胀类时出错?