Android软件开发之在程序中时时获取logcat日志信息_GaoMatrix的博客-程序员宅基地

技术标签: button  null  android  多线程  Android初级  游戏  

转载自雨松MOMO的博客原文地址:http://blog.csdn.net/xys289187120/article/details/6765046

Logcat说明
Android开发中一共有5个log信息过滤器 分别是 VERBOSE 、DEBUG、 INFO、 WARN、 ERROR,这些各位盆友们应该都知道吧,不知道给我留言哈~~
请各位盆友们观察下面的代码,内容为监听一个按钮点击事件一旦点击后输出一段Logcat信息,为了监听系统打印的这个log信息我们开启一个线程在后台去监听它。

  1.    @Override  
  2.    public void onCreate(Bundle savedInstanceState) {  
  3. super.onCreate(savedInstanceState);  
  4. setContentView(R.layout.check);  
  5.   
  6. /**得到这个按钮对象**/  
  7. button = (Button)findViewById(R.id.button0);  
  8.   
  9. /**监听这个按钮**/  
  10. button.setOnClickListener(new OnClickListener() {  
  11.       
  12.     @Override  
  13.     public void onClick(View view) {  
  14.     /**输出一段Log信息**/  
  15.     Log.i("Mytest""this is a test");  
  16.       
  17.     /**开启线程用于监听log输出的信息**/  
  18.     new Thread(CheckActivity.this).start();  
  19.     }  
  20. });  
  21.   
  22.   
  23.    }  
线程开启以后Runtime主要用于过滤logcat信息,这里主要说一下里面的参数 
"logcat"不用说了吧,我们就是要监听它 呵呵。
"Mytest" 表示监听的Tag 这里以上面点击按钮输出的LOG信息为例。
"I"表示监听的Log类型,当然这里还可以写其它类型 。VERBOSE(v) 、DEBUG(d)、 INFO(i)、 WARN(w)、 ERROR(e), 不过须要与监听的与Tag一一对称才可以。
"*:s"表示监听所有的信息,这里表示只要tag是Mytest ,Logcat类型为i 的 所有Log都会被获取到。

然后将所有过滤出来的log信息存在 BufferReader中 调用readLine()可以获取到每一行的log信息。
line.indexOf("this is a test") 如果大于等于0 表示当前获取的log信息包含我们上面点击按钮的。
这样子就可以监听各种LOG 无论是我们自己写的还是系统写的都可以监听到 哇咔咔~~

最后用Toast将内容显示出来,因为在线程中所以必需使用Lopper不太了解的盆友请看Android游戏开发之多线程的操作方式(二十六)

  1.    @Override  
  2.    public void run() {  
  3. Process mLogcatProc = null;  
  4. BufferedReader reader = null;  
  5. try {  
  6.         //获取logcat日志信息  
  7.     mLogcatProc = Runtime.getRuntime().exec(new String[] { "logcat","Mytest:I *:S" });  
  8.     reader = new BufferedReader(new InputStreamReader(mLogcatProc.getInputStream()));  
  9.   
  10.     String line;  
  11.       
  12.     while ((line = reader.readLine()) != null) {  
  13.           
  14.         if (line.indexOf("this is a test") > 0) {  
  15.             //logcat打印信息在这里可以监听到  
  16.             // 使用looper 把给界面一个显示  
  17.             Looper.prepare();    
  18.             Toast.makeText(this"监听到log信息", Toast.LENGTH_SHORT).show();   
  19.             Looper.loop();    
  20.         }  
  21.     }  
  22.   
  23. catch (Exception e) {  
  24.   
  25.     e.printStackTrace();  
  26. }  
  27.   
  28.    }  
最重要的一定要加读取系统LOG的权限喔,否则是监听不到的。 
  1. <uses-permission android:name="android.permission.READ_LOGS" />  


效果图

     

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/GaoMatrix/article/details/7070648

智能推荐

怎样对java网站进行简单修改_用Java写一个简单的毕业设计,功能就增删改查的一些基本功能就可以,需要哪些技术?..._weixin_39614831的博客-程序员宅基地

JAVA实现对吗。我来BB几句吧。首先,你描述的问题,解决方案是属于java web的知识。毕设的程度呢。第一种方案:你可以入手很成熟很成熟的ssm架构。就是Spring+mybatis plus +Spring Mvc的结构,这样的框架搭建,在网络上有很多成熟的案例。需要你掌握的东西,大概有以下几点:servlet + jsp + jsJAVA核心基础前端技术,简单的,你可以用bootstra...

新技能-大数据利器之图数据库neo4j:1. 安装部署_杨大大-qwer的博客-程序员宅基地

随着网络信息时代的快速发展,5G时代的到来,智能穿戴设备的逐渐普及,人与人、人与物、物与物之间的关系逐渐复杂,类似于mysql这样的关系型数据库已经无法满足这种需求,而大数据行业需要处理的数据之间的关系随数据量呈几何级数增长,带来的是硬件成本、人力成本的不断上升,而为了解决这一痛点,图数据库应运而生,专为解决复杂关系网而诞生的一种技术。1. 什么是图数据库图:由节点和关系两个元素组成。每个节点代表一个实体(人,地,事物,类别或其他数据),每个关系代表两个节点的关联方式。这种通用结构可以对各种场景进行建

nginx传输大文件时,504gateway 问题解决_lazyliang的博客-程序员宅基地_大文件上传504

在传输大文件时,需要增加其响应超时时间,因为后台服务还在进行数据处理,如果到了65s,nginx会把连接断开,抛出一个504超时异常显示在前台页面。这个时候我们需要改变其响应超时时间达到我们需要的效果。文件配置如下:nginx.confhttp { #连接存活超时时间,默认为65s,如果下面需要修改,这个时候一定要与之相同或更大 keepalive_timeout 1m; ...

python如何给字加颜色_python之如何输出带颜色的文字_weixin_40009207的博客-程序员宅基地

[python_控制台输出带颜色的文字方法]在python开发的过程中,经常会遇到需要打印各种信息。海量的信息堆砌在控制台中,就会导致信息都混在一起,降低了重要信息的可读性。这时候,如果能给重要的信息加上字体颜色,那么就会更加方便用户阅读了。当然了,控制台的展示效果有限,并不能像前段一样炫酷,只能做一些简单的设置。不过站在可读性的角度来看,已经好很多了。书写格式,和相关说明如下:#格式:设置颜色开...

python之对象、类、方法_冬瓜很皮的博客-程序员宅基地

一、对象python是面向对象编程的,对象可以理解为一系列数据以及访问和操作这些数据的方法。与对象属性相关联的函数称为方法。&gt;&gt;&gt;object.get_price() #方法使用对象的好处有:多态、封装、继承。多态:不需要知道变量指向哪种对象,也可以对其操作。&gt;&gt;&gt; def add(x,y): #可以使用不同类型...

java 8 switch用法_Java中的switch语句——通过示例学习Java编程(8)_照顾好我亲舅的博客-程序员宅基地

作者:CHAITANYA SINGH来源:https://www.koofun.com//pro/kfpostsdetail?kfpostsid=19当我们在代码逻辑中有多个选项,而且需要为每个选项执行不同的任务时,我们可以使用switch case语句。switch case语句的语法看上去如下所示:注:虽然在switch语句里面的case语句块里面的break语句不是必须要有的,但switch...

随便推点

jpg分辨率格式 jpg格式分析(转)_weixin_34255055的博客-程序员宅基地

JPEG格式格式:JFIF(JPEG档的交换格式)压缩:JPEG(灰阶影像压缩比约为10:1;彩色影像约为20:1)以JPEG文件格式保存的图像实际上是2个不同格式的混合物:JPEG格式规范本身,用来定义图像的压缩方法,并且被包在定议分辨率和颜色模式的图像数据格式之中。Photoshop和实际上每个能读取和写入JPEG文件格式的其他应用程序,以 JFIF文件格式(JPEG文件交换格式, JPEG ...

Java int和long转字节数组 极简实现_lolxxs的博客-程序员宅基地_long 转字节

文章目录int转字节数组字节数组转intlong转字节数组字节数组转long参考int转字节数组public static byte[] intTobyteArray(int num) { byte[] b = new byte[4]; b[3] = (byte)(num &amp; 0xff); b[2] = (byte)((num &gt;&gt; 8) &amp; 0xff); b[1] = (byte)((num &gt;&gt; 16) &amp; 0x

Google Protocol Buffer的安装与.proto文件的定义_weixin_30631587的博客-程序员宅基地

什么是protocol Buffer呢?Google Protocol Buffer( 简称 Protobuf) 是 Google 公司内部的混合语言数据标准.我理解的就是:它是一种轻便高效的结构化数据存储格式,可以用于结构化数据串行化,或者说序列化。方便文件的存储与网络传输.我们自己就不用定义它们的存储与传输协议了.怎么使用protobuf呢?第一步, 写一...

洛谷 P1129 [ZJOI2007]矩阵游戏 二分图最大匹配_Saito Asuka的博客-程序员宅基地

题目链接题意:有一个 n∗nn*nn∗n 大小的矩阵,每个格点上都有一种颜色,0表示白色,1表示黑色,可以进行两种操作,交换某两行颜色或者某两列颜色。问是否能通过若干次这两种操作使得矩阵的主对角线(从左上角到右下角)上的格点颜色均为黑色。思路:主要是建图了可以把每一行每一列分别当作一个点,此时若第 iii 行第 jjj 列的格点为黑色,就相当于 iii 和 jjj 之间存在一条无向边,白色则...

顶层Makefile分析_四季帆的博客-程序员宅基地_顶层makefile

1. 顶层目录下的MakefileOpenHarmony/kernel/liteos_a/Makefile-include $(LITEOSTOPDIR)/tools/build/config.mk #包含 kernel/liteos_a/tools/build/config.mkLITEOS_TARGET = liteosLITEOS_PLATFORM_BASE = $(LITEOSTOPDIR)/platformall: $(OUT) $(...

CG-CTF的GBK - injection_小 白 渣的博客-程序员宅基地

1.题目2.首先我们进入题目地址,发现下图所示,首先猜测可能存在sql注入3.于是我们尝试',但被转义了4.被转义了,那咋办,此时,想到了URL中%df与\结合会变成運,如下图5.因此我们可以闭合id的值,使用#,--空格或--+来注释最后一个’这里对#进行了过滤,但我们可以使用%23进行绕过–空格也是标准的SQl注释语句,但这里对空格进行了过滤,但我们可以使用%20绕过–...

推荐文章

热门文章

相关标签