2016-01-22 6 views
2

J'essaie d'envoyer un rapport d'exception ACRA, sans fermer l'application, mais il ferme toujours l'application et affiche la boîte de dialogue.Comment envoyer un rapport d'exception ACRA sans fermer l'application (même afficher le dialogue)

J'envoie un rapport d'exception comme celui-ci.

ACRA.getErrorReporter().handleException(finalException, false); 

Deuxième argument est responsable de la fermeture de l'application. Mais il affiche toujours le dialogue et l'application se ferme quand même.

Voici ma configuration, mais je ne pense pas que ce sera utile

@ReportsCrashes(
     reportType = org.acra.sender.HttpSender.Type.JSON, 
     httpMethod = org.acra.sender.HttpSender.Method.POST, 
     mode = ReportingInteractionMode.DIALOG, 
     resDialogText = R.string.crash_dialog_text, 
     resDialogIcon = android.R.drawable.ic_dialog_info, //optional. default is a warning sign 
     resDialogTitle = R.string.crash_dialog_title, // optional. default is your application name 
     resDialogCommentPrompt = R.string.crash_dialog_comment_prompt, // optional. When defined, adds a user text field input with this text resource as a label 
     resDialogOkToast = R.string.crash_dialog_ok_toast,// optional. displays a Toast message when the user accepts to send a report. 
     formUri = "aaaaaaaaa", 
     formUriBasicAuthLogin = "oooooooo", 
     formUriBasicAuthPassword = "bbbbbbbb" 
) 

Peut-être que je fais quelque chose de mal, comment envoyer juste rapport en arrière-plan et ne pas notifier l'utilisateur.

Merci.

EDIT

J'ai lu le code source et trouvé qu'une seule façon de le faire.

ReportingInteractionMode previousMode = ACRA.getConfig().mode(); 
       try { 
        ACRA.getConfig().setMode(ReportingInteractionMode.SILENT); 
       } catch (ACRAConfigurationException e) { 
        e.printStackTrace(); 
       } 
       ACRA.getErrorReporter().handleException(finalException, false); 
       try { 
        ACRA.getConfig().setMode(previousMode); 
       } catch (ACRAConfigurationException e) { 
        e.printStackTrace(); 
       } 

Mais il semble être une autre meilleure façon de le faire.

Répondre