Проблема с 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 позвольте мне прокомментировать, если у вас возникнут проблемы с переоцениванием этого!!