Пример #1
0
        public override void OnCreate()
        {
            DefaultNightMode = QApis.AreAvailable ? ModeNightFollowSystem : ModeNightAuto;

            base.OnCreate();
            ProcessLifecycleOwner.Get().Lifecycle.AddObserver(this);

#if !DEBUG
            Firebase.FirebaseApp.InitializeApp(this);
#endif
            AndroidDependencyContainer.EnsureInitialized(Context);
            var app = new AppStart(AndroidDependencyContainer.Instance);
            app.LoadLocalizationConfiguration();
            var accessLevel = app.GetAccessLevel();
            app.SetupBackgroundSync();
            app.SetFirstOpened();
            if (accessLevel == AccessLevel.TokenRevoked || accessLevel == AccessLevel.LoggedIn)
            {
                AndroidDependencyContainer.Instance
                .UserAccessManager
                .LoginWithSavedCredentials();
            }

            var accessibilityManager = GetSystemService(AccessibilityService) as AccessibilityManager;
            if (accessibilityManager != null)
            {
                var accessibilityEnabled = accessibilityManager.IsTouchExplorationEnabled;
                AndroidDependencyContainer.Instance.AnalyticsService.AccessibilityEnabled.Track(accessibilityEnabled);
            }

#if USE_APPCENTER
            Microsoft.AppCenter.AppCenter.Start(
                "{TOGGL_APP_CENTER_ID_DROID}",
                typeof(Microsoft.AppCenter.Crashes.Crashes),
                typeof(Microsoft.AppCenter.Analytics.Analytics));
#endif

#if DEBUG
            // Add or remove `Detect*` chains to detect unwanted behaviour
            // Change the `Penalty*` to change how the StrictMode works, allowing it to crash the app if necessary
            // Try not to misinterpret the logs/penalties; You should only be looking for behaviour that shouldn't
            // be happening
            Android.OS.StrictMode.SetVmPolicy(
                new Android.OS.StrictMode.VmPolicy.Builder()
                .DetectActivityLeaks()
                .DetectLeakedClosableObjects()
                .DetectLeakedRegistrationObjects()
                .DetectLeakedSqlLiteObjects()
                .PenaltyLog()
                .Build());
            Android.OS.StrictMode.SetThreadPolicy(
                new Android.OS.StrictMode.ThreadPolicy.Builder()
                .DetectCustomSlowCalls()
                .PenaltyLog()
                .Build());
#endif
        }
Пример #2
0
        public static void EnsureInitialized(ApiEnvironment environment, Platform platform, string version)
        {
            if (Instance != null)
            {
                return;
            }

            Instance = new AndroidDependencyContainer(environment, platform, version);
            UIDependencyContainer.Instance = Instance;
        }
Пример #3
0
        private void handleDeepLink(Uri uri, AndroidDependencyContainer dependencyContainer)
        {
            var timeService       = dependencyContainer.TimeService;
            var interactorFactory = dependencyContainer.InteractorFactory;
            var urlParser         = dependencyContainer.DeeplinkParser;

            var parameters = urlParser.Parse(uri);

            parameters.Match(
                te => runAndStartRootActivity(() => te.Start(interactorFactory, timeService)),
                te => runAndStartRootActivity(() => te.Continue(interactorFactory)),
                te => runAndStartRootActivity(() => te.Stop(interactorFactory, timeService)),
                te => runAndStartRootActivity(() => te.Create(interactorFactory)),
                te => runAndStartRootActivity(() => te.Update(interactorFactory, timeService)),
                showNewTimeEntry,
                showEditTimeEntry,
                showReports,
                showCalendar,
                _ => startRootActivityAndFinish());
        }