Android NetowrkOnMainThreadException

Привет!!

Я пытаюсь создать приложение для Android, чтобы управлять дроном Ar. Но у меня возникает проблема, когда я пытаюсь подключить свое устройство к дрону. Я создал поток, чтобы сделать сокет. Но когда я запускаю его в основной деятельности, у меня возникает исключение: android.os.NetworkOnMainThreadException.

Это мой код с моей темой в классе ThreadCmd:

String commande="";
byte[] cmdToByte;
String iPinString;
InetAddress IpDrone;
DatagramSocket clientSocket;
Thread threadDecollage;
TextView tv ;
boolean etat;
DatagramPacket sendPacketWithCmd;
private byte[] ip = {(byte)192, (byte)168, (byte)1, (byte)1 };
boolean isRunning = true;
private final static long TIME_SLEEP= 20;


        public void run() {         


            try {
                IpDrone = InetAddress.getByAddress(ip);
            } catch (UnknownHostException e1) {
                e1.printStackTrace();
                etat = false;
            }


            try {
                clientSocket = new DatagramSocket();
            } catch (SocketException e) {
                e.printStackTrace();
                etat = false;
            }

            while(isRunning){
                runControl();
                try {
                     Thread.sleep(TIME_SLEEP);
                     } catch (InterruptedException e) {
                         e.printStackTrace();
                    }
            }

        }
            public void runControl(){



    commande ="AT*REF=1,290717696<LF>AT*REF=2,290717952<LF>AT*REF=3,290717696<LF>";




          cmdToByte = commande.getBytes();


            try {

                sendPacketWithCmd = new DatagramPacket(cmdToByte,cmdToByte.length,IpDrone,5556);                    
                clientSocket.send(sendPacketWithCmd);
            } catch (IOException e) {
                e.printStackTrace();
                etat = false;
            }
            etat = true;
            isRunning=false;
            }


            public boolean retourneetat(){
                return etat;
            }

После в основной деятельности:

 Threadcmd tc = new Threadcmd();
 tc.run(); 

Я не вижу своей ошибки, поэтому я прошу вас, можете ли вы мне помочь!! (я не забываю разрешение)

ps: прошу прощения за мой английский:)

1 ответ

Решение
tc.run(); 

Это твоя проблема. Здесь вы вызываете метод run() в том же потоке.

Чтобы начать новую тему, позвонитеtc.start();

Другие вопросы по тегам