我正在实现在我的应用程序中读取设备日志的功能。
为此,我从 Reading logs programatically 获得了帮助。此代码段提供设备日志(所有正在运行的进程的日志)。这很好,工作。
现在我想从设备日志中过滤应用程序日志。 那么我该如何以编程方式进行呢?
答案 0 :(得分:1)
您是否检查过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 :(得分:0)
1)以编程方式读取日志不适用于Ice Cream Sandwich。
2)使用PackageManager
让软件包管理器获取已安装应用程序的软件包名称。
3)使用ActivityManager
获取正在运行的进程列表。
将应用程序的程序包名称与正在运行的进程匹配,并查找进程ID。 并按包名称或进程ID筛选属于目标应用程序的日志。
这只是大局。