读取系统日志(Inuse)android.permission.READ_LOGS

2022-04-16 教育 53阅读
您好,很高兴为您解答。读取日志需要的权限

主要代码
packagemt.fzgh;importjava.io.BufferedReader;importjava.io.InputStreamReader;importjava.util.ArrayList;publicclassMyLog{publicstaticclassMLog//静态类{publicstaticvoidgetLog(){System.out.println("--------funcstart--------");//方法启动try{ArrayListcmdLine=newArrayList();//设置命令logcat-d读取日志cmdLine.add("logcat");cmdLine.add("-d");ArrayListclearLog=newArrayList();//设置命令logcat-c清除日志clearLog.add("logcat");clearLog.add("-c");Processprocess=Runtime.getRuntime().exec(cmdLine.toArray(newString[cmdLine.size()]));//捕获日志BufferedReaderbufferedReader=newBufferedReader(newInputStreamReader(process.getInputStream()));//将捕获内容转换为BufferedReader//Runtime.runFinalizersOnExit(true);Stringstr=null;while((str=bufferedReader.readLine())!=null)//开始读取日志,每次读取一行{Runtime.getRuntime().exec(clearLog.toArray(newString[clearLog.size()]));//清理日志....这里至关重要,不清理的话,任何操作都将产生新的日志,代码进入死循环,直到bufferreader满System.out.println(str);//输出,在logcat中查看效果,也可以是其他操作,比如发送给服务器..}if(str==null){System.out.println("--isnull--");}}catch(Exceptione){e.printStackTrace();}System.out.println("--------funcend--------");}}}
这里比较令人纠结的一点就是日志的清理logcat-c如果不加入清理在buffer满为止,代码自身能够迭代6~7次....

附带一份logcat的命令...不过好像过滤器指令有问题....慎用
选项说明
-s默认设置过滤器
-f文件输出到日志文件
-c清除日志
-d获取日志
-g获取日志的大小
-v格式设置日志(见下面的格式打印格式)

-v格式例
briefW/tag(876):message
processW(876)message(tag)
tagW/tag:message
threadW(876:0x37c)message
rawmessage
time09-0805:40:26.729W/tag(876):message
threadtime09-0805:40:26.729876892Wtag:message
long[09-0805:40:26.729876:0x37cW/tag]message

如若满意,请点击右侧【采纳答案】,如若还有问题,请点击【追问】希望我的回答对您有所帮助,望采纳!~O(∩_∩)O~
声明:你问我答网所有作品(图文、音视频)均由用户自行上传分享,仅供网友学习交流。若您的权利被侵害,请联系fangmu6661024@163.com