Androids Fehlerbericht nutzen

  • Antworten:5
TooTall18t
  • Forum-Beiträge: 5

06.06.2016, 19:33:00 via Website

Nabend,

ich bräuchte mal etwas Hilfe bei einem wahrscheinlich kleinen Problemchen.

Jeder kennt es, jeden nervt es, die Android Meldung: " App XY angehalten [Melden] [OK]".

Das ich die möglichen Fehler die meine App produziert abfangen soll ist mir bewusst und da wo ich es weiß tue ich es auch. Problem dabei ist aber, da meine App eine Remote App ist und ich den Gegenpart nicht programmiere und es sehr viele Fehlergründe geben kann, das ich auf die Rückmeldungen meiner Benutzer angewiesen bin, wenn was schief geht.

Ich biete zwar an die Fehlerprotokolle per E-Mail zu verschicken, aber das möchte scheinbar niemand, schätze mal unter anderem wegen Herausgabe der E-Mail Ady.

Meine jetzige Lösung sieht vor anzubieten das Fehlerprotokoll als E-Mail zu verschicken oder die App abstürzen zu lassen (RuntimeEx.) sodass die Android Meldung kommt und man dort über [Melden] das Fehlerprotokoll anonym verschicken kann.

Eine etwas elegantere Lösung fände ich aber, das ich direkt anbieten kann das Fehlerprotokoll an die Entwicklungskonsole zuschicken ohne das dabei die App abstürzt.
Ich habe viel Zeit damit verbracht nach einer Lösung zu suchen um diesen "Dienst" anzustoßen, konnte bis jetzt dazu aber nichts finden.
Als Lösung wird immer wieder nur ACRA angeboten, wobei ich dort wieder nur die Möglichkeit hätte dies in eine E-Mail zu verpacken und vom Benutzer zu verschicken.
Die alternative dies auf einen Server übertragen zu lasse habe ich nicht.

Also steht die Frage nun im Raum lässt sich der "Dienst" für die Fehlerprotokolle anstoßen ohne die App zum Absturz zu bringen oder muss ich den Weg tatsächlich gehen?

Für Hilfe wäre ich echt dankbar.
Schönen Abend noch.

Antworten
pepperonas
  • Forum-Beiträge: 434

06.06.2016, 20:47:19 via Website

Hallo,
so ganz verstehe ich deine Frage nicht... Der Nutzer soll einen Fehlerbericht versenden ohne dass ihm aktiv etwas angezeigt wird? Dann würde ich die Errors lieber gleich auf einen eigenen Server laden (ist vermutlich nicht so einfach und bedeutet schon recht viel Arbeit)...
Dass irgendwas "nicht-google-artiges" in die Developer-Console injected wird, schätze ich als schwierig ein.

Habe hier mal was zum Error-Dialog geschrieben... Vielleicht hilft dir das schon weiter.

Btw: Es ist sehr oft besser, wenn ein Programm sich einfach verabschiedet und man es notfalls neu startet, anstatt dass es halbfunktionierend weiterläuft.

Mein Vorschlag: Lade ein Update hoch und zeige den Nutzern einen Dialog an, mit dem du auf Beta-Tests hinweist und darauf, dass du mehr Fehlerberichte brauchst... Das ist vorerst die einfachste Alternative und idR sollte ja bereits bei 10 aktiven Testern eine deutlich bessere Aussagekraft über Fehler in einer App zu erwarten sein, als wenn man nur alleine auf einem max. zwei Geräten daheim im stillen Kämmerlein testet.

Open Source

Antworten
TooTall18t
  • Forum-Beiträge: 5

07.06.2016, 05:12:23 via App

Es soll schon noch ein Dialog kommen der auf den Fehler hinweist. Sonst würde der Benutzer das ja nicht mit bekommen das es zu einem Fehler kommt und er würde unter Umständen es immer und immer wieder probieren.

Es ist jetzt im Moment so das der Fehler abgefangen wird und dieser als Mail verschickt werden kann. Macht nur keiner.
Deshalb möchte ich alternativ zum Mail Versand den Fehlerdienst nutzen ohne die App abzuschießen. Ich finde das unprofessionell.
Es soll also wenn man im Dialog auf einen Button drückt direkt der Kommentar Dialog des Fehlerdienstes kommen und nicht der Hinweis das die App angehalten wurde und man dann noch mal auf melden drücken muss und dann erst der Kommentar Dialog kommt.

ACRA gibt mir nur noch die Optionen Mail Versand über eine E-Mail App oder Upload auf einen PHP Server. Erstes habe ich selber geschrieben, macht aber keiner. Und einen PHP Server habe ich nicht zur Verfügung.
Der Upload in eine Google Doc wäre interessant gewesen, wird nur leider nicht mehr unterstützt.

Antworten
pepperonas
  • Forum-Beiträge: 434

07.06.2016, 15:34:59 via Website

public class MainActivity extends ActionBarActivity {


    private TextView tvNullPtr;
    private String TAG = "MainActivity";


    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        Log.d(TAG, "onCreate ");

        Thread.setDefaultUncaughtExceptionHandler(new Thread.UncaughtExceptionHandler() {
            @Override
            public void uncaughtException(Thread thread, Throwable ex) {
                Log.e(TAG, "Error in uncaughtException - Msg: " + ex.getMessage() + "  ");
                ex.printStackTrace();
                // zeige deinen Dialog
            }
        });
    }


    public void onClickNullPtr(View view) { tvNullPtr.setText(""); }


    //    @Override
    //    protected void onDestroy() { 
    //        super.onDestroy(); // UNCALLED!!
    //    }

}

Nachtrag: kannst das ganze auch in der Application Class aufrufen, dann werden die Fehler in allen anderen Activities ebenfalls abgefangen.

— geändert am 07.06.2016, 15:40:16

Open Source

Antworten
TooTall18t
  • Forum-Beiträge: 5

08.06.2016, 19:19:11 via Website

Danke pepperonas das hilft mir schon mal etwas die Fehler die nicht über try/catch-Blöcke abgefangenen werden zu fangen.

Aber meine Grund Frage besteht weiterhin.
ACRA kann keine Mail einfach so verschicken, es senden einen Intent aus und der Benutzer muss weiterhin seine Mail-App nutzen. Das habe ich ja bereits integriert und es nutzt keiner.

Also bleibt mir wirklich nur der Weg über einen gezielten RuntimeEx um die Daten an die Entwicklungskonsole zu schicken.

Antworten