最近在调蓝牙读卡的指令传输,写一个专门用来测试蓝牙读卡器是否符合标准的APP,但是在开发过程中,发现可能我们所做的功能跟客户的预期是有差别的,虽然原型已经确定,但是敢肯定达不到客户的预期,最终肯定面临返工的情况,所以准备采取一个补救的措施,将控制台打印的所有日志全部输出到一个txt文档中保存在手机上,记录一个完整的蓝牙连接指令传输的过程。
附上一个写文件的工具类:
import java.io.FileWriter;
import java.io.IOException;
import java.text.SimpleDateFormat;
import java.util.Date;
/**
* @author mo
* @date 2018/6/26
*/
public class WriteLogUtil {
public static int writeLog(String log) {
FileWriter fw;
Date now = new Date();
SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy/MM/dd HH:mm:ss.SSS");
String sDate = dateFormat.format(now);
try {
// FILE_PATH : /mnt/sdcard/
fw = new FileWriter(SmartCardConfig.FILE_PATH + "ble_log.txt", true);
fw.write(sDate + " : " + log + "\r\n");
fw.flush();
fw.close();
} catch (IOException e) {
e.printStackTrace();
}
return 0;
}
}
直接调用writeLog方法,将想要打印的日志传入就可以了。
控制台好像告诉我错了,但是没有崩溃,半斤八两的英语翻译一下:没有找到一个叫做ble_log.txt的文件,泥马这不废话吗,当然不存在这个文件,不存在你创建啊,你创..emmm.........,创建?这是一个白APP,好像没给写的权限诶~没权限你就说没权限,你看看你给我说的啥,你说的是啥!给你权限!!
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.WRITE_SETTINGS" />
不管那么多,都给你,都给你,拿去拿去,来一遍。
恩?果然不报错了,呵呵哒,来瞅一眼生成文件内容。
诶?在哪呢,怎么找不到,被吃了?路径不对?不可能啊,这就是根路径,是不是权限没给全?不可能吧,在项目里面用的好好的....
项目里面用.....那还是去年的事了,诶?几个月前我好像给手机升级了一下系统诶~7.0了?动态权限?来一波查,搞鸡毛啊,网上粘的代码不好使啊,之前没升级权限之前手机系统是6.0啊,有啥差别.emmm....
恩.......无意看到一个帖子..要加一个权限。。?跟我最初的判断是一致的。加上搞试试.....
<!-- 在SDCard中创建与删除文件权限 -->
<uses-permission android:name="android.permission.MOUNT_UNMOUNT_FILESYSTEMS"/>
再来一波,果然好使了,我亲爱的txt。嘻嘻嘻。。。
点开查看一波,恩恩,内容对,但是在阅读器当中看怎么就那么别扭,不行,我要到电脑中打开.......
泥马...文件呢?眼瞎没看到,再仔细找找......还是没有,咦?手机上有啊?疯啦?是不是被占用了电脑显示不出来?赶紧退出文件管理.......还是没有,泥马.......
续: