问题标签 [nsd]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
0 回答
19 浏览

java - 不能从静态上下文中引用非静态变量 discoveryListener

我想了解为什么从静态方法调用 Nsdmanager 时会出现此问题,代码如下

我遇到了以下问题:

** :\ProgQt\build-app-Android_for_armeabi_v7a_arm64_v8a_x86_x86_64_Clang_Qt_5_15_0_for_Android-Debug\android-build\src\org\qtproject\example\musiclist\MusicList.java:188:错误:无法从静态上下文 nsdManager 引用非静态变量 discoveryListener。 discoverServices("_http._tcp.", NsdManager.PROTOCOL_DNS_SD, discoveryListener);**

0 投票
0 回答
409 浏览

java - 应用程序中检测到 JNI 错误:调用 JNI GetStaticMethodID 时出现未决异常 java.lang.NullPointerException

请我想构建一个 NSD(网络服务发现)应用程序,使用 Jni 和 Qt,但我收到以下错误:

应用程序中的 JNI 检测到错误:调用 JNI GetStaticMethodID 时出现未决异常 java.lang.NullPointerException:尝试在空对象引用上调用虚拟方法“java.lang.Object android.content.Context.getSystemService(java.lang.String)”

我正在尝试调用函数:c++ 部分中的 discover()

下面是代码:

0 投票
0 回答
67 浏览

java - NI 在应用程序中检测到错误:调用 JNI GetMethodID 时出现未决异常 java.lang.RuntimeException

我想在 Qt 平台上通过 JNI 使用 C++ 和 Java 构建一个应用程序,我尝试执行以下代码:c++

Java 代码:

但是我遇到了以下问题:我认为这是一个错误编译,F art : art/runtime/java_vm_ext.cc:410] JNI DETECTED ERROR IN APPLICATION: JNI GetMethodID called with pending exception java.lang.RuntimeException: Can't create handler没有调用 Looper.prepare() F art : art/runtime/java_vm_ext.cc:410] at void android.os.Handler.(android.os.Handler$Callback, boolean) (Handler.java:200) 的内部线程F art : art/runtime/java_vm_ext.cc:410] at void android.os.Handler.() (Handler.java:114) F art : art/runtime/java_vm_ext.cc:410] at void android.app.Activity .() (Activity.java:865) F art : art/runtime/java_vm_ext.cc:410] at void org.qtproject.qt5.android.bindings.QtActivity.() (QtActivity.java:94)

0 投票
0 回答
55 浏览

android - 如何在 ViewModel 中使用 Andoird NsdManager

我正在寻找有关如何将 Android 网络服务发现 (NSD) 与 MVVM / ViewModels 一起使用的建议。

我已经成功地构建了一个基本的 NsdManager 应用程序,基本上是将Android 官方页面中的示例代码剪切并粘贴到 MainActivity 中:

我的基本应用程序有效,但我没有将大量代码转储到我的 MainActivity 中,而是尝试采用“最佳实践”并应用 MVVM

如果我理解,这意味着让 ViewModel 告诉 nsdManager 开始发现服务。即在我的 ViewModel 中有这样的代码

稍后,我的 MainActivity 视图可以与 ViewModel 交互(可能通过 LiveData?)以显示已发现的服务列表。

但是,我立即被困在如何创建 ViewModel 可访问的 nsdManager 上。

在 MainActivity 我可以实例化一个类似这样的 nsdManager。

但是如果我理解(?)在 ViewModel 中有这样的代码会引入活动“上下文”依赖项 - 需要避免的事情。

我是一个 Android 新手,我完全有可能对 ViewModel 等应该如何工作有完全错误的想法

对于如何将 Android NSDManager 与 ViewModel 结合使用的任何建议(或更好的示例),我将不胜感激。

0 投票
0 回答
77 浏览

android - 如何使用 Android 通过 HTTPS 查询启用了 mDNS 的服务器?

由于 Android 缺乏对 mDNS 的支持,我在尝试使 2 台设备在 LAN 上通过 HTTPS 进行通信时遇到了问题。

简而言之,我正在开发 Android 应用程序(客户端),它将 HTTPS 请求发送到同一 LAN 上的物联网设备(服务器)。客户端和服务器都应位于具有动态、DHCP 服务 IP 地址的同一网络(IPv4 LAN)上。

问题是,服务器使用自签名证书,其主题设置为其主机名(由 mDNS 广播)。而且由于 Android 不支持 mDNS,我无法找到使用其hostname.local地址访问我的服务器的方法。如果我直接使用服务器的 IP 地址(通过调试服务器获得),我的应用程序显然不会信任连接,因为服务器的证书不引用 IP,而只引用它的主机名。

如果我的应用程序要在支持 mDNS 的设备上运行,我知道我可以使用https://server.local客户端信任服务器的根 CA 并通过继承信任其自己的叶证书的事实。

我已经读过“解决方法”是在我的 Android 应用程序中实现一个 NSD 侦听器来检索我在 LAN 上的服务器的 IP 地址。但这似乎并没有解决我的问题,因为我对解析服务器的主机名并不感兴趣:我只想查询https://server.local以便应用程序可以信任连接(因为服务器的证书仅涵盖主机名)。