Cùng tình tôi trước đó, Tôi muốn biết chi tiết nhật ký ứng dụng liên quan đến Broadcast Receiver, dịch vụ đang chạy hoặc lỗi ứng dụng, v.v khi người dùng đang sử dụng thiết bị Android.
[nên sử dụng mã này, bạn có thể nhận được các thông tin như khi Broadcast Receiver của bạn bắt đầu, dừng lại, tai nạn vv]
tôi đã viết LogCat riêng của tôi và nó làm việc tốt, và đây là mã có thể giúp bạn
Trước tiên, bạn cần phải đặt một số hằng số trong tập tin liên tục ứng dụng của
public static final String LOG_DIR="/SeedSpeak/LOG";
public static final String LOG_MODE_EXCEPTION="exception";
public static final String LOG_MODE_INFO="info";
Sau đó, bạn cần phải tạo ra ba phương pháp trong Utill ứng dụng của tập tin
0.123.
public static void MyLog(String logMode, String msgKey, Object msgValue) {
File sdCard = Environment.getExternalStorageDirectory();
File dir = new File(sdCard.getAbsolutePath()+
SeedSpeakConstants.LOG_DIR);
if (!dir.exists()) {
dir.mkdirs();
}
String logFileAbsPath = dir + File.separator + "SeedSpeakLog.txt";
BufferedWriter bufferedWritter = null;
try {
bufferedWritter = new BufferedWriter(
new FileWriter(logFileAbsPath,
true));
String logValue = null;
if (logMode.equalsIgnoreCase(
SeedSpeakConstants.LOG_MODE_EXCEPTION)) {
logValue = logStackTrace((Throwable) msgValue);
} else {
logValue = msgValue.toString();
}
logValue = currentDateTimeValue() + ": " + logMode +
" :" + msgKey + ": "
+ logValue + "\n";
bufferedWritter.write(logValue);
bufferedWritter.newLine();
bufferedWritter.flush();
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
public static String logStackTrace(Throwable t) {
StringWriter sw = new StringWriter();
PrintWriter pw = new PrintWriter(sw, true);
t.printStackTrace(pw);
pw.flush();
sw.flush();
return sw.toString();
}
public static String currentDateTimeValue() {
SimpleDateFormat formatter =
new SimpleDateFormat("yyyy-mm-dd-HH:mm:ss");
formatter.setLenient(false);
Date curDate = new Date();
String curTime = formatter.format(curDate);
return curTime;
}
Bây giờ, Làm thế nào để sử dụng này trong dự án của bạn, đơn giản như vậy :)
Lưu ý: đây TAG chỉ là một tập tin hiện tại (hoạt động/dịch vụ/BR) tên như thế này
private final static String TAG = "PlantSeedActivity";
(1). cho chỉ in thông tin (BR, dịch vụ bắt đầu hay không .. bla bla) đăng nhập sử dụng này
SeedSpeakUtill.MyLog(SeedSpeakConstants.LOG_MODE_INFO,
TAG + ".onCreate", "Service is started now");
(2). cho in ngoại lệ/chi tiết vụ tai nạn sử dụng cách này
try{
// todo here
}
catch (Exception ex)
{
SeedSpeakUtill.MyLog(SeedSpeakConstants.LOG_MODE_EXCEPTION,
TAG + ".onStartCommand", ex);
}
Bây giờ bạn chỉ cần đặt ứng dụng trong thiết bị Android và khi bạn muốn để có được đăng chi tiết đi đến SeedSpeakLog.txt tập tin và debug ứng dụng của bạn.
hoặc một trong nhiều cách mà tôi nghe nói rằng Google Tỉnh ACRA (Application Crash Report for Android) thư viện
bạn có thể muốn có cái nhìn về this và this liên kết
PL cho tôi nhận xét nếu bạn nhận được bất kỳ rắc rối chuyển loại này! !
Tại sao bạn không gỡ lỗi bằng cách sử dụng một sự kiện khác (cho mục đích thử nghiệm)? IE: Kích hoạt nó từ dịch vụ hoặc hoạt động của riêng bạn hoặc để nó lắng nghe một số sự kiện khác. –