Проблема с Android: отладка при выключенном телефоне
для отладки BroadcastReceiver при перезагрузке телефона, Я пробовал какой-то метод, но не работает, и ссылка следующая
как отладить boot_complete broadcast receiver "Force Close" сбои? force-close-аварии
2 ответов
вероятно, это не лучший способ, но у меня была аналогичная проблема, и я использовал функцию сна 30 секунд только в начале метода onReceive приемника загрузки, поэтому у меня было время, чтобы перейти к списку процессов в перспективе DDMS и поместить мое приложение в режим отладки, поэтому точка останова на первой реальной инструкции метода onReceive он пошел hitted. надеюсь, это поможет
та же ситуация, что и раньше,Я хотел знать подробности журнала приложений относительно широковещательного приемника, запущенных служб или сбоя приложения и т. д., Когда он использовался пользователем на устройстве Android.
[таким образом, используя этот код, вы можете получить информацию, например, когда ваш широковещательный приемник запускается,останавливается, сбой и т. д. ]
я написал свой собственный LogCat, и он работает хорошо, и вот код может вам помочь
сначала вам нужно поместить некоторые константы в постоянный файл приложения
public static final String LOG_DIR="/SeedSpeak/LOG";
public static final String LOG_MODE_EXCEPTION="exception";
public static final String LOG_MODE_INFO="info";
тогда вам нужно создать три метода в файле Utill приложения
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;
}
теперь, как использовать это в своем проекте, так просто :)
Примечание: здесь тег - это просто текущее имя файла (activity/service/BR), как это
private final static String TAG = "PlantSeedActivity";
(1). для печати только информации (BR, служба запущена или нет.. bla bla) log используйте это
SeedSpeakUtill.MyLog(SeedSpeakConstants.LOG_MODE_INFO,
TAG + ".onCreate", "Service is started now");
(2). для печати сведений об исключении / сбое используйте этот способ
try{
// todo here
}
catch (Exception ex)
{
SeedSpeakUtill.MyLog(SeedSpeakConstants.LOG_MODE_EXCEPTION,
TAG + ".onStartCommand", ex);
}
теперь вы просто поместите приложение в Android-устройство и когда вы хотите получить данные журнала перейти к SeedSpeakLog.txt-файл и отладка приложения.
или еще один способ, которым я слышал, что Google provice ACRA (отчет о сбоях приложения для Android) библиотека
вы можете посмотреть на этой и этой ссылке
PL позвольте мне прокомментировать, если у вас возникнут проблемы с переоцениванием этого!!