Wenn Du das Datum auf das deutsche Format einstellst, dann erwartet DateParse auch das deutsche. Andere Formate gehen dann nicht (gerade ausprobiert).
Die Frage ist, warum Starter.SelectedDate "YYYY-MM-DD" enthält. Wahrscheinlich kommt das Format aus der DB. Also: Entweder oder...
DateTime.DateFormat = "dd.MM.yyyy"
Starter.SelectedDate = DateTime.Date(DateTime.Now)
(Memory Leak?, Android Bug?)?
#Region Service Attributes
#StartAtBoot: False
#ExcludeFromLibrary: True
#End Region
Sub Process_Globals
Dim aktuelleActivity As Object 'CrashTakeScreenShot
Private logs As StringBuilder
Private logcat As LogCat
Private const emailAddress As String = "xx.support@xxx.com" '####################### geht nur, wenn im Release Modus debug #######################
End Sub
Sub Service_Create
logs.Initialize
#if RELEASE
logcat.LogCatStart(Array As String("-v","raw","*:F","B4A:v"), "logcat")
#end if
End Sub
Sub Service_Start (StartingIntent As Intent)
End Sub
Private Sub logcat_LogCatData (Buffer() As Byte, Length As Int)
logs.Append(BytesToString(Buffer, 0, Length, "utf8"))
If logs.Length > 5000 Then
logs.Remove(0, logs.Length - 4000)
End If
End Sub
'Return true to allow the OS default exceptions handler to handle the uncaught exception.
Sub Application_Error (Error As Exception, StackTrace As String) As Boolean
'wait for 500ms to allow the logs to be updated.
Dim jo As JavaObject
Dim l As Long = 500
jo.InitializeStatic("java.lang.Thread").RunMethod("sleep", Array(l))
logcat.LogCatStop
logs.Append(StackTrace)
LogWrite(logs)
SendEMail
Return True
End Sub
Sub Service_Destroy
End Sub
Sub LogWrite(Eventslog As String)
Dim TextWriter2 As TextWriter
Dim sdRoot As String
Dim now As Long
now = DateTime.now
sdRoot = File.DirRootExternal & "/"
If File.Exists(File.DirRootExternal, "crashlog.txt") = True Then
File.Delete(File.DirRootExternal, "crashlog.txt")
End If
Optionen.LoadOptionen
DateTime.DateFormat = "dd.MM.yyyy HH:mm"
File.WriteString(File.DirRootExternal, "crashlog.txt", "")
TextWriter2.Initialize(File.OpenOutput(sdRoot, "crashlog.txt", True))
TextWriter2.WriteLine("***************************" & CRLF & _
Application.VersionName & Application.VersionCode & CRLF & _
"apk_datum: " & Optionen.mapk_datum & CRLF & _
"Crash Datum: " & DateTime.Date(now) & CRLF & _
"Combera ID: " & HDB.mCombera_ID & CRLF & _
"***************************" & CRLF & _
CRLF & now & CRLF & "- " & Eventslog & CRLF)
TextWriter2.Close
' Log( Application.VersionCode) '40
' Log( Application.VersionName) 'cp
End Sub
Sub SendEMail
Dim email As Email
Dim filename As String = CallSub(aktuelleActivity,"MakeScreenshot") 'CrashTakeScreenShot
Optionen.LoadOptionen
email.To.Add(emailAddress)
email.Subject = "Programm-Fehler: " & Main.mActionName & ", " & Optionen.mgebiet_intern & ", " & Optionen.mvorname & " " & Optionen.mnachname
email.Body = "Fehler Text in der Anlage." & Chr(13) & "Der Fehler wird an COMBERA gesendet."
email.Attachments.Add(File.Combine(File.DirRootExternal, "crashlog.txt"))
email.Attachments.Add(filename) 'CrashTakeScreenShot
StartActivity(email.GetIntent)
End Sub
Das glaube ich nicht. Wenn du den Fehler nicht reproduzieren kannst gehst du beim testen deiner App, nicht den Weg der den Fehler produziert. Je umfangreicher eine App ist, desto schwerer ist es versteckte Bugs zu finden. Nach meiner Erfahrung finden die Tester, egal wieviele nicht alle Bugs. Wer die Bugs findet, sind die User. Und da musst du ansetzen.
Hier ist eine Anleitung von Erel, damit wird der Fehler auf jeden Fall gefunden. Vorrausetzung ist, du kannst deine User mit einbinden.
https://www.b4x.com/android/forum/threads/uncaught-exceptions.59805/#content
Hier ist meine Version von Erels Vorlage. Eingebaut in die Starter.
B4X:#Region Service Attributes #StartAtBoot: False #ExcludeFromLibrary: True #End Region Sub Process_Globals Dim aktuelleActivity As Object 'CrashTakeScreenShot Private logs As StringBuilder Private logcat As LogCat Private const emailAddress As String = "cp.support@combera.com" '####################### geht nur, wenn im Release Modus debug ####################### End Sub Sub Service_Create logs.Initialize #if RELEASE logcat.LogCatStart(Array As String("-v","raw","*:F","B4A:v"), "logcat") #end if End Sub Sub Service_Start (StartingIntent As Intent) End Sub Private Sub logcat_LogCatData (Buffer() As Byte, Length As Int) logs.Append(BytesToString(Buffer, 0, Length, "utf8")) If logs.Length > 5000 Then logs.Remove(0, logs.Length - 4000) End If End Sub 'Return true to allow the OS default exceptions handler to handle the uncaught exception. Sub Application_Error (Error As Exception, StackTrace As String) As Boolean 'wait for 500ms to allow the logs to be updated. Dim jo As JavaObject Dim l As Long = 500 jo.InitializeStatic("java.lang.Thread").RunMethod("sleep", Array(l)) logcat.LogCatStop logs.Append(StackTrace) LogWrite(logs) SendEMail Return True End Sub Sub Service_Destroy End Sub Sub LogWrite(Eventslog As String) Dim TextWriter2 As TextWriter Dim sdRoot As String Dim now As Long now = DateTime.now sdRoot = File.DirRootExternal & "/" If File.Exists(File.DirRootExternal, "crashlog.txt") = True Then File.Delete(File.DirRootExternal, "crashlog.txt") End If Optionen.LoadOptionen DateTime.DateFormat = "dd.MM.yyyy HH:mm" File.WriteString(File.DirRootExternal, "crashlog.txt", "") TextWriter2.Initialize(File.OpenOutput(sdRoot, "crashlog.txt", True)) TextWriter2.WriteLine("***************************" & CRLF & _ Application.VersionName & Application.VersionCode & CRLF & _ "apk_datum: " & Optionen.mapk_datum & CRLF & _ "Crash Datum: " & DateTime.Date(now) & CRLF & _ "Combera ID: " & HDB.mCombera_ID & CRLF & _ "***************************" & CRLF & _ CRLF & now & CRLF & "- " & Eventslog & CRLF) TextWriter2.Close ' Log( Application.VersionCode) '40 ' Log( Application.VersionName) 'cp End Sub Sub SendEMail Dim email As Email Dim filename As String = CallSub(aktuelleActivity,"MakeScreenshot") 'CrashTakeScreenShot Optionen.LoadOptionen email.To.Add(emailAddress) email.Subject = "Programm-Fehler: " & Main.mActionName & ", " & Optionen.mgebiet_intern & ", " & Optionen.mvorname & " " & Optionen.mnachname email.Body = "Fehler Text in der Anlage." & Chr(13) & "Der Fehler wird an COMBERA gesendet." email.Attachments.Add(File.Combine(File.DirRootExternal, "crashlog.txt")) email.Attachments.Add(filename) 'CrashTakeScreenShot StartActivity(email.GetIntent) End Sub
Gruß
RauchG
Nimm besser deine E-Mail Adresse aus dem Code Schnipse
Ich meine den "LogCat Auszug im Error Report".
Der Error Report funktioniert nur im Release Compile. Schreib doch mal einen Fehler ins Script (wie Erel).
We use cookies and similar technologies for the following purposes:
Do you accept cookies and these technologies?
We use cookies and similar technologies for the following purposes:
Do you accept cookies and these technologies?