问题:点击Setup闪退,如果是NullPointerException异常,主要是获取dev目录下的设备号为空;或者说获取的设备号数组为空;获取不到串口号;
可能引起的原因:Android系统防火墙打开了,所以需要关闭;具体步骤如下
解决方法:
a,cmd 中输入adb root 获取root权限
b,adb remount (有的不需要执行这条命令)
c,adb shell
d,setenforce 0 关闭防火墙(注意:重启后失效,需重新设置)
e,getenforce 查看当前权限状态
第二个问题
问题:执行Runtime.getRuntime().exec("/system/xbin/su")或者Runtime.getRuntime().exec("/system/bin/su")获取Process为null抛出SecurityException异常
这里主要是获取su权限然后修改串口号文件的读写权限;
但是使用Runtime.getRuntime().exec("/system/xbin/su")获取su权限(文件),在5.1系统以上版本不能使用了,所以获取的Process为null;
解决方法:
1,让板子厂家把串口权限放开。
2,如果有root权限,可以使用adb 修改串口的读写权限;
2.1,adb root 获取root权限
2.2,adb shell
2.3,cd dev
2.4,chmod 777 tty* (可以指定具体的串口号,tty*是把所有的tty开头的文件权限全部设置为可读可写)
第三个问题
如果没有执行第二个问题的代码,直接调用open方法( private native static FileDescriptor open(String path, int baudrate, int flags) ;)获取FileDescriptor为null;解决办法和二相同;
总结
执行一和二的解决办法,一般就能解决串口打开失败的问题;