diff --git a/pom.xml b/pom.xml index 608b6b13..ce68f93b 100644 --- a/pom.xml +++ b/pom.xml @@ -66,7 +66,7 @@ default-compile - 6 + 8 false module-info.java diff --git a/src/main/java/com/fazecast/jSerialComm/SerialPort.java b/src/main/java/com/fazecast/jSerialComm/SerialPort.java index 1daf5f0e..1f374690 100644 --- a/src/main/java/com/fazecast/jSerialComm/SerialPort.java +++ b/src/main/java/com/fazecast/jSerialComm/SerialPort.java @@ -608,7 +608,8 @@ public final boolean openPort(int safetySleepTime, int deviceSendQueueSize, int try { Thread.sleep(safetySleepTimeMS); } catch (Exception e) { Thread.currentThread().interrupt(); } // If this is an Android root application, we must explicitly allow serial port access to the library - File portFile = isAndroidDelete ? new File(comPort) : null; + // Skip su/chmod when androidPort is already set (USB serial path handles open itself) + File portFile = (isAndroidDelete && androidPort == null) ? new File(comPort) : null; if (portFile != null && (!portFile.canRead() || !portFile.canWrite())) { Process process = null; @@ -1130,6 +1131,10 @@ public final boolean setDTRandRTS(boolean dtr, boolean rts) // SerialPort Constructors private SerialPort() {} + private SerialPort(String port, String friendly, String description, String location, String serial, String manufacture, int vid, int pid) + { + this(port, friendly, description, location, serial, manufacture, "", vid, pid); + } private SerialPort(String port, String friendly, String description, String location, String serial, String manufacture, String driver, int vid, int pid) { comPort = port; diff --git a/src/main/java/com/fazecast/jSerialComm/android/AndroidPort.java b/src/main/java/com/fazecast/jSerialComm/android/AndroidPort.java index 93ab4d2b..4cf2f96e 100644 --- a/src/main/java/com/fazecast/jSerialComm/android/AndroidPort.java +++ b/src/main/java/com/fazecast/jSerialComm/android/AndroidPort.java @@ -147,15 +147,17 @@ public static SerialPort[] getCommPortsNative() AndroidPort androidPort = null; Constructor serialPortConstructor = - SerialPort.class.getDeclaredConstructor(String.class, String.class, String.class, String.class, String.class, int.class, int.class); + SerialPort.class.getDeclaredConstructor(String.class, String.class, String.class, String.class, String.class, String.class, String.class, int.class, int.class); serialPortConstructor.setAccessible(true); SerialPort serialPort = serialPortConstructor.newInstance( "COM" + (ports.size() + 1), - device.getDeviceName(), device.getProductName(), + device.getProductName(), + device.getDeviceName(), device.getSerialNumber(), - device.getSerialNumber(), + device.getManufacturerName(), + "", device.getVendorId(), device.getProductId() );