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 |
} |