http://www.androidsnippets.com/how-to-capture-application-log
如果需要程序实现这个功能,需要在Manifest中添加Permission:
android.permission.READ_LOGS
应用Runtime.getRuntime().exec( parameters )启动Logcat,并返回一个Process对象,然后通过BufferedReader捕捉进程的数据流。
源代码:
01 | Process mLogcatProc = null ; |
02 | BufferedReader reader = null ; |
03 | try |
04 | { |
05 | mLogcatProc = Runtime.getRuntime().exec( new String[] |
06 | { "logcat" , "-d" , "AndroidRuntime:E [Your Log Tag Here]:V *:S" }); |
07 | |
08 | reader = new BufferedReader( new InputStreamReader |
09 | (mLogcatProc.getInputStream())); |
10 | |
11 | String line; |
12 | final StringBuilder log = new StringBuilder(); |
13 | String separator = System.getProperty( "line.separator" ); |
14 | |
15 | while ((line = reader.readLine()) != null ) |
16 | { |
17 | log.append(line); |
18 | log.append(separator); |
19 | } |
20 | |
21 | // do whatever you want with the log. I'd recommend using <A title=Intents href="http://developer.android.com/reference/android/content/Intent.html" target=_blank>Intents</A> to create an email |
22 | } |
23 | |
24 | catch (IOException e) |
25 | { |
26 | ... |
27 | } |
28 | |
29 | finally |
30 | { |
31 | if (reader != null ) |
32 | try |
33 | { |
34 | reader.close(); |
35 | } |
36 | catch (IOException e) |
37 | { |
38 | ... |
39 | } |
40 | |
41 | } |