我正在实现在我的应用程序中读取设备日志的功能。
为此,我从以编程方式阅读日志中获得了帮助。此代码段提供设备日志(所有正在运行的进程的日志)。那很好,可以工作。
现在我想从设备日志 中过滤应用程序日志。那么我该如何以编程方式进行呢?
我正在实现在我的应用程序中读取设备日志的功能。
为此,我从以编程方式阅读日志中获得了帮助。此代码段提供设备日志(所有正在运行的进程的日志)。那很好,可以工作。
现在我想从设备日志 中过滤应用程序日志。那么我该如何以编程方式进行呢?
您是否检查了 logcat 参考?http://developer.android.com/tools/debugging/debugging-log.html#alternativeBuffers 和http://developer.android.com/tools/help/logcat.html
你可以试试
public class LogTest extends Activity {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
try {
Process process = Runtime.getRuntime().exec("logcat -b main -d");
BufferedReader bufferedReader = new BufferedReader(
new InputStreamReader(process.getInputStream()));
StringBuilder log=new StringBuilder();
String line;
while ((line = bufferedReader.readLine()) != null) {
log.append(line);
}
TextView tv = (TextView)findViewById(R.id.textView1);
tv.setText(log.toString());
} catch (IOException e) {
}
}
}
您所要做的就是指定您的命令。您可以通过在 adb 上运行命令来测试您的命令。要进一步过滤它,请查看http://developer.android.com/tools/debugging/debugging-log.html#filteringOutput
1) Ice Cream Sandwich 无法以编程方式读取日志。
2) 使用PackageManager
获取包管理器来获取已安装应用程序的包名。
3) 使用您ActivityManager
获取正在运行的进程列表。
将应用程序的包名称与正在运行的进程匹配,并找到进程 ID。并通过包名或进程ID过滤属于目标应用程序的日志。
这只是大图。