2015-04-17 2 views
0

Я использую ACRA, и я создал CustomReportSender. В этом классе я реализую метод отправки, когда я делаю некоторую настройку отчета, а затем подключаюсь к пользовательскому URL-адресу и отправляю отчет.Acra не отправляет отчеты автоматически в Android 5 (леденец)

public void send(Context cnt, CrashReportData report) throws ReportSenderException { 
    //code for customizing crash report  
    HttpSender sender = new HttpSender(Method.POST, Type.JSON, urlToSend, null); 
    sender.send(cnt,report); 
} 

Способ отправки отчета является ТОСТ, что означает, пользователь получает сообщение отображается тоста, а затем аварии отчет автоматически направляется (без взаимодействия с пользователем). Все работает нормально, отчеты отправляются, чтобы узнать, где я могу их проанализировать, до недавнего времени, когда я узнал, что это не работает для Android 5.X. Однако он все еще работает для всех остальных версий Android до 4.4.4.

Я тестировал его, но ошибок и проблем в журнале не было. Похоже, леденец убивает весь процесс, прежде чем ACRA сумеет отправить отчеты о сбоях. Однако, хотя отчеты о сбоях затем отправляются при следующем запуске приложения, чего также не происходит. У кого-нибудь еще есть эти проблемы? Как я могу это преодолеть?

Одно очко, которое я также обнаружил, заключается в том, что если я устанавливаю режим в диалоговом окне, а затем пользователь подтверждает отправку, то он работает. Любая помощь могла бы быть полезна.

Последние события, которые я вижу в LogCat.

enter image description here

+0

Я использую ACRA на Lolipop без проблем. Что-то вроде этого трудно точно определить, так что о первом обновлении до последней версии и использовать аннотацию вместо настраиваемого отправителя отчета? – inmyth

+0

У меня есть последняя версия. То, что вы предложили, к сожалению, не работало. Я также добавил последние вещи, которые я вижу в logcat. – loki19

+0

Я имею в виду, как удалить все пользовательские классы и использовать очень простые @ReportsCrashes (formKey = "", formUri = "http: // .."). В основном цель состоит в том, чтобы найти минимум для этого, чтобы работать на Lollipop. – inmyth

ответ

0

Похоже, проблема заключалась в том, что в методе отправки моего собственного отчетаSender я создал новую Thread(), и почему-то из-за этого Android просто отключает приложение и отправка прекращается. Решение в моем случае: Тема была вокруг кода, который пытался отправить отчеты о сбоях. После того, как я удалил Thread, это сработало.

+0

Какое решение? –

+1

Привет, проверьте, находится ли ваш код, отправляющий отчет о сбое, в другой поток. Если это так, попробуйте избавиться от этой нити вокруг него. Эта проблема решена для меня. – loki19

0

Это possibloe для Android Framework, чтобы убить приложение, прежде чем он имел возможность отправить отчет.

Но ACRA отправит отправку любых неотправленных отчетов при следующем запуске приложения.

Посмотрите на свои журналы ACRA при запуске (после аварийного сбоя). Вы должны увидеть, что он пытается отправить.

+0

Да, это именно то, что я думаю, происходит. Android убивает приложение перед отправкой отчета. И я также знаю, что ACRA должен отправлять какие-либо неотправленные отчеты при запуске приложения, но почему-то это не так. Но если у меня есть режим отчетов для Dialog, то ACRA отправляет отчет при следующем запуске, однако это не относится к тихую или тосты. – loki19

+0

Какая версия ACRA вы используете и публикуете свой журнал при запуске. – William

Смежные вопросы