Android开发之在程序中时时获取logcat日志信息的方法(附demo源码下载)
脚本之家 / 编程助手:解决程序员“几乎”所有问题!
脚本之家官方知识库 → 点击立即使用
本文实例讲述了Android开发之在程序中时时获取logcat日志信息的方法。分享给大家供大家参考,具体如下:
今天分享一个在软件开发中很实用的例子,也是这几天在通宵加班中我使用的一个小例子, 在程序中监听Log信息。
为什么说它实用?原因是Android的开发厂商各种修改之后手机和手机之间以后存在很多差异。比如说魅族M9手机 开发中如果项目中涉及到访问手机系统的地方,例如访问系统短信库,M9手机它会提示一个dialog框 让用户自己去选择 访问还是不访问。这样就给开发适配带来了巨大的麻烦。本来在这里直接能拿到数据可是现在我须要对用户的选择进行监听? 以后的小米手机肯定也会有这个问题~ 悲剧啊~~最后在这里这里我选择使用监听LOG信息来监听用户点击按钮授权与不受权。
1.获取手机型号信息
1 2 3 4 5 6 | //获取机型名称 android.os.Build.MODEL //获取SDK信息 android.os.Build.VERSION.SDK //获取版本号 android.os.Build.VERSION.RELEASE |
那么代码中就可以这样写
2.Logcat说明
Android开发中一共有5个log信息过滤器 分别是 VERBOSE 、DEBUG、 INFO、 WARN、 ERROR
请各位盆友们观察下面的代码,内容为监听一个按钮点击事件一旦点击后输出一段Logcat信息,为了监听系统打印的这个log信息我们开启一个线程在后台去监听它。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 | @Override public void onCreate(Bundle savedInstanceState) { super .onCreate(savedInstanceState); setContentView(R.layout.check); /**得到这个按钮对象**/ button = (Button)findViewById(R.id.button0); /**监听这个按钮**/ button.setOnClickListener( new OnClickListener() { @Override public void onClick(View view) { /**输出一段Log信息**/ Log.i( "Mytest" , "this is a test" ); /**开启线程用于监听log输出的信息**/ new Thread(CheckActivity. this ).start(); } }); } |
线程开启以后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将内容显示出来
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 | @Override public void run() { Process mLogcatProc = null ; BufferedReader reader = null ; try { //获取logcat日志信息 mLogcatProc = Runtime.getRuntime().exec( new String[] { "logcat" , "Mytest:I *:S" }); reader = new BufferedReader( new InputStreamReader(mLogcatProc.getInputStream())); String line; while ((line = reader.readLine()) != null ) { if (line.indexOf( "this is a test" ) > 0 ) { //logcat打印信息在这里可以监听到 // 使用looper 把给界面一个显示 Looper.prepare(); Toast.makeText( this , "监听到log信息" , Toast.LENGTH_SHORT).show(); Looper.loop(); } } } catch (Exception e) { e.printStackTrace(); } } |
最重要的一定要加读取系统LOG的权限喔,否则是监听不到的。
效果图:
完整实例代码点击此处本站下载。
更多关于Android相关内容感兴趣的读者可查看本站专题:《Android开发入门与进阶教程》、《Android资源操作技巧汇总》、《Android视图View技巧总结》及《Android控件用法总结》
希望本文所述对大家Android程序设计有所帮助。
微信公众号搜索 “ 脚本之家 ” ,选择关注
程序猿的那些事、送书等活动等着你
相关文章
浅析Android Studio 3.0 升级各种坑(推荐)
本文是小编给大家收藏整理的关于Android Studio 3.0 升级后遇到的一些坑,非常不错,具有参考借鉴价值,需要的朋友参考下吧2017-11-11Android Jetpack组件Lifecycle源码解析
这篇文章主要为大家介绍了Android Jetpack组件Lifecycle源码解析,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪2023-03-03android自定义gradle插件并且发布到本地仓库详细教程
这篇文章主要介绍了android自定义gradle插件并且发布到本地仓库详细教程的相关资料,需要的朋友可以参考下2023-07-07Android之ArcSlidingHelper制作圆弧滑动效果
这篇文章主要介绍了Android之ArcSlidingHelper制作圆弧滑动效果,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下2021-08-08Android Activity 与Service进行数据交互详解
这篇文章主要介绍了Android Activity 与Service进行数据交互的相关资料,在开发Android App的时候经常会使用这样的功能,需要的朋友可以参考下2016-10-10
最新评论