使用android-SerialPort-api时候出现问题(android代码执行shell命令)

最近在搞移动端串口通讯,使用的是官方的接口 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的时候有解决过相关问题

猜你喜欢

转载自blog.csdn.net/qq_39037047/article/details/82689378