当出现“Android NSD 服务类型的发现未启动。”的错误提示时,意味着您的应用程序尝试使用网络服务发现(NSD)来查找网络上的设备或服务,但NSD服务类型的发现未启动。
要解决此问题,您可以按照以下步骤操作:
NsdManager nsdManager;
NsdManager.DiscoveryListener discoveryListener;
String serviceType = "_http._tcp.";
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
nsdManager = (NsdManager) getSystemService(Context.NSD_SERVICE);
discoveryListener = new NsdManager.DiscoveryListener() {
@Override
public void onStartDiscoveryFailed(String serviceType, int errorCode) {
Log.e(TAG, "onStartDiscoveryFailed: Error code: " + errorCode);
}
@Override
public void onStopDiscoveryFailed(String serviceType, int errorCode) {
Log.e(TAG, "onStopDiscoveryFailed: Error code: " + errorCode);
}
// 添加其他回调方法,如onServiceFound、onServiceLost等
};
nsdManager.discoverServices(serviceType, NsdManager.PROTOCOL_DNS_SD, discoveryListener);
}
@Override
protected void onDestroy() {
super.onDestroy();
if (nsdManager != null) {
nsdManager.stopServiceDiscovery(discoveryListener);
}
}
通过执行以上步骤,您的应用程序应该能够成功启动NSD服务类型的发现并避免出现“Android NSD 服务类型的发现未启动。”的错误。请注意,您还需要根据您的需求添加其他必要的回调方法和逻辑。