android基础--获取logcat信息

一个在软件开发中很实用的例子, 在程序中监听Log信息。

1.获取手机型号信息

//获取机型名称
android.os.Build.MODEL
//获取SDK信息
android.os.Build.VERSION.SDK
//获取版本号
android.os.Build.VERSION.RELEASE

那么代码中就可以这样写

1

2

3

if (android.os.Build.MODEL.equals("meizu_m9")){

    System.out.println("我是M9手机");

}

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

18

19

20

21

22

    @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将内容显示出来,因为在线程中所以必需使用Lopper不太了解的盆友请看多线程

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

    @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的权限喔,否则是监听不到的。

1

 

下载地址:http://vdisk.weibo.com/s/aa6ki

  • 本文固定链接: https://www.xuanyusong.com/archives/193

 

 

 

你可能感兴趣的:(Android)