使用android-SerialPort-api時候出現問題(android程式碼執行shell命令)
阿新 • • 發佈:2018-11-21
最近在搞移動端串列埠通訊,使用的是官方的介面 android-SerialPort-api,這個接口裡面需要對/dev這個資料夾下面的串列埠檔案進行操作
所以demo裡面要執行su命令對dev資料夾下面的ttySN檔案進行許可權更改,改為666,所以重點來了
我們先看下面的相關程式碼,
if (!device.canRead() || !device.canWrite()) { try { /* Missing read/write permission, trying to chmod the file */ Process su; su = Runtime.getRuntime().exec(sSuPath); String cmd = "chmod 666 " + device.getAbsolutePath() + "\n" + "exit\n"; su.getOutputStream().write(cmd.getBytes()); if ((su.waitFor() != 0) || !device.canRead() || !device.canWrite()) { throw new SecurityException(); } } catch (Exception e) { e.printStackTrace(); throw new SecurityException(); } }
其中 su.getOutputStream().write(cmd.getBytes());
每次執行這句話的時候都會異常 java.io.IOException: write failed: EPIPE (Broken pipe)
以上操作相當於我們在程式碼中執行控制檯shell命令,需要手機已經root
上面程式碼中變數device為選中的ttySn檔案,以上程式碼是對其許可權的修改相當於我們直接在控制檯執行以下命令
結果是ok的,但是通過我上面列出的官方的demo會出現異常,
請問有沒有哥們在使用android-SerialPort-api這個demo的時候有解決過相關問題