UDP 发送总是在捕获中结束

UDP send always end ups in the catch

fab.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {
            try {
                String host = "192.168.4.1";
                int port = 2390;
                byte[] message = "Som tu".getBytes();
                InetAddress address = InetAddress.getByName(host);
                DatagramPacket packet = new DatagramPacket(message, message.length, address, port);
                DatagramSocket dSocket = new DatagramSocket();
                dSocket.send(packet);
                dSocket.close();
            }
            catch(Exception e){
                speak("error");
            }
            Intent intent = new Intent(RecognizerIntent.ACTION_RECOGNIZE_SPEECH);
            intent.putExtra(RecognizerIntent.EXTRA_LANGUAGE_MODEL,
                    RecognizerIntent.LANGUAGE_MODEL_FREE_FORM);
            intent.putExtra(RecognizerIntent.EXTRA_MAX_RESULTS,3);
            mySpeechRecognizer.startListening(intent);
        }
    });

我正在尝试创建 android 应用程序,该应用程序将在按下按钮时通过 udp 发送文本,但它总是在捕捉中结束..有什么想法为什么?我也收到 Error: E/HAL: load: id=gralloc != hmi->id=gralloc 但我不知道如何修复它。 有没有我忘记的许可?我只使用 (RECORD_AUDIO,INTERNET)

查看您的代码,我假设您得到了 NetworkOnMainThreadException。 Android 不允许在其主线程上使用网络 activity 以保持应用响应。为避免此错误,请在 onClick 方法中启动一个新线程并在

中执行网络 activity