mirror of
https://github.com/Nioux/AideDeJeu.git
synced 2025-10-29 14:35:45 +00:00
Merge branch 'master' of https://github.com/Nioux/AideDeJeu
This commit is contained in:
commit
e357ab0698
1 changed files with 73 additions and 0 deletions
|
|
@ -6,6 +6,8 @@ using Android.Runtime;
|
|||
using Android.Views;
|
||||
using Android.Widget;
|
||||
using Android.OS;
|
||||
using System.Threading.Tasks;
|
||||
using System.Diagnostics;
|
||||
|
||||
namespace AideDeJeu.Droid
|
||||
{
|
||||
|
|
@ -19,6 +21,10 @@ namespace AideDeJeu.Droid
|
|||
ToolbarResource = Resource.Layout.Toolbar;
|
||||
|
||||
base.OnCreate(bundle);
|
||||
|
||||
AppDomain.CurrentDomain.UnhandledException += CurrentDomainOnUnhandledException;
|
||||
TaskScheduler.UnobservedTaskException += TaskSchedulerOnUnobservedTaskException;
|
||||
|
||||
Xamarin.Essentials.Platform.Init(this, bundle);
|
||||
Xamarin.Essentials.ExperimentalFeatures.Enable(Xamarin.Essentials.ExperimentalFeatures.ShareFileRequest);
|
||||
|
||||
|
|
@ -30,6 +36,8 @@ namespace AideDeJeu.Droid
|
|||
//global::Xamarin.Forms.FormsMaterial.Init(this, bundle);
|
||||
SQLitePCL.raw.SetProvider(new SQLitePCL.SQLite3Provider_e_sqlite3());
|
||||
|
||||
DisplayCrashReport();
|
||||
|
||||
LoadApplication(new App());
|
||||
}
|
||||
|
||||
|
|
@ -52,6 +60,71 @@ namespace AideDeJeu.Droid
|
|||
|
||||
base.OnRequestPermissionsResult(requestCode, permissions, grantResults);
|
||||
}
|
||||
|
||||
|
||||
private static void TaskSchedulerOnUnobservedTaskException(object sender, UnobservedTaskExceptionEventArgs unobservedTaskExceptionEventArgs)
|
||||
{
|
||||
var newExc = new Exception("TaskSchedulerOnUnobservedTaskException", unobservedTaskExceptionEventArgs.Exception);
|
||||
LogUnhandledException(newExc);
|
||||
}
|
||||
|
||||
private static void CurrentDomainOnUnhandledException(object sender, UnhandledExceptionEventArgs unhandledExceptionEventArgs)
|
||||
{
|
||||
var newExc = new Exception("CurrentDomainOnUnhandledException", unhandledExceptionEventArgs.ExceptionObject as Exception);
|
||||
LogUnhandledException(newExc);
|
||||
}
|
||||
|
||||
internal static void LogUnhandledException(Exception exception)
|
||||
{
|
||||
try
|
||||
{
|
||||
const string errorFileName = "Fatal.log";
|
||||
var libraryPath = System.Environment.GetFolderPath(System.Environment.SpecialFolder.Personal); // iOS: Environment.SpecialFolder.Resources
|
||||
var errorFilePath = System.IO.Path.Combine(libraryPath, errorFileName);
|
||||
var errorMessage = String.Format("Time: {0}\r\nError: Unhandled Exception\r\n{1}",
|
||||
DateTime.Now, exception.ToString());
|
||||
System.IO.File.WriteAllText(errorFilePath, errorMessage);
|
||||
|
||||
// Log to Android Device Logging.
|
||||
Android.Util.Log.Error("Crash Report", errorMessage);
|
||||
}
|
||||
catch
|
||||
{
|
||||
// just suppress any error logging exceptions
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
// If there is an unhandled exception, the exception information is diplayed
|
||||
// on screen the next time the app is started (only in debug configuration)
|
||||
/// </summary>
|
||||
[Conditional("DEBUG")]
|
||||
private void DisplayCrashReport()
|
||||
{
|
||||
const string errorFilename = "Fatal.log";
|
||||
var libraryPath = System.Environment.GetFolderPath(System.Environment.SpecialFolder.Personal);
|
||||
var errorFilePath = System.IO.Path.Combine(libraryPath, errorFilename);
|
||||
|
||||
if (!System.IO.File.Exists(errorFilePath))
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
var errorText = System.IO.File.ReadAllText(errorFilePath);
|
||||
new AlertDialog.Builder(this)
|
||||
.SetPositiveButton("Clear", (sender, args) =>
|
||||
{
|
||||
System.IO.File.Delete(errorFilePath);
|
||||
})
|
||||
.SetNegativeButton("Close", (sender, args) =>
|
||||
{
|
||||
// User pressed Close.
|
||||
})
|
||||
.SetMessage(errorText)
|
||||
.SetTitle("Crash Report")
|
||||
.Show();
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue