アプリの logcat イベントを SD カードのテキスト ファイルに保存したいと考えています。私の警報アプリは、私と私の友人のデバイスでは正常に動作しますが、他のアプリではエラーが発生します。たとえば、アプリのアラームの時刻が間違っていると言われますが、私や友人のデバイスではこのエラーは表示されません。この問題とその他の問題のため、アプリに関連するすべてのイベント logcat を原子的に保存したいと考えています。問題を解決するためにログファイルを送ってくれます。これどうやってするの?私の悪い英語でごめんなさい
質問する
2579 次
5 に答える
3
次の方法で logcat を取得できます。
static final int BUFFER_SIZE = 1024;
public String getLogCat() {
String[] logcatArgs = new String[] {"logcat", "-v", "time"};
Process logcatProc = null;
try {
logcatProc = Runtime.getRuntime().exec(logcatArgs);
}
catch (IOException e) {
return null;
}
BufferedReader reader = null;
String response = null;
try {
String separator = System.getProperty("line.separator");
StringBuilder sb = new StringBuilder();
reader = new BufferedReader(new InputStreamReader(logcatProc.getInputStream()), BUFFER_SIZE);
String line;
while ((line = reader.readLine()) != null) {
sb.append(line);
sb.append(separator);
}
response = sb.toString();
}
catch (IOException e) {
}
finally {
if (reader != null) {
try {
reader.close();
}
catch (IOException e) {}
}
}
return response;
}
これをSDカードに保存できString
ます。
于 2013-01-19T21:53:52.893 に答える
1
このタイプの機能は、 ACRA Android ライブラリによって既に実装されています。ライブラリはクラッシュを検出し、クラッシュ情報を Google ドキュメント スプレッドシートまたは独自の宛先に送信します。
于 2013-01-19T21:51:58.963 に答える
1
次の方法で logcat を取得できます。
static final int BUFFER_SIZE = 1024;
public String getLogCat() {
String[] logcatArgs = new String[] {"logcat", "-v", "time"};
Process logcatProc = null;
try {
logcatProc = Runtime.getRuntime().exec(logcatArgs);
}
catch (IOException e) {
return null;
}
BufferedReader reader = null;
String response = null;
try {
String separator = System.getProperty("line.separator");
StringBuilder sb = new StringBuilder();
reader = new BufferedReader(new InputStreamReader(logcatProc.getInputStream()), BUFFER_SIZE);
String line;
while ((line = reader.readLine()) != null) {
sb.append(line);
sb.append(separator);
}
response = sb.toString();
}
catch (IOException e) {
}
finally {
if (reader != null) {
try {
reader.close();
}
catch (IOException e) {}
}
}
return response;
}
これをSDカードに保存でき
String
ます。
「どろろ」からのこの回答は、多くの行が原因で常に途中で動かなくなったため、うまくいきませんでしたが、それを修正する方法がわかりません。
于 2013-02-15T08:53:28.390 に答える
1
「-d」引数を指定しない限り、logcat は新しいログの読み取りをブロックします。
試す
String[] logcatArgs = new String[] {"logcat", "-d", "-v", "time"};
于 2013-02-28T05:53:40.803 に答える