diff --git a/.github/workflows/Release.yaml b/.github/workflows/Release.yaml
index 00a0ce3..87449d9 100644
--- a/.github/workflows/Release.yaml
+++ b/.github/workflows/Release.yaml
@@ -16,7 +16,7 @@ jobs:
# Константы, используемые далее по тексту
env:
PROJ: ${{ github.event.repository.name }}
- TAG: '3.4.2'
+ TAG: '3.5'
steps:
# Проверка состава репозитория (без анализа, как может показаться)
diff --git a/.release/EnchantIt.apk b/.release/EnchantIt.apk
index 8569d0f..48644a5 100644
Binary files a/.release/EnchantIt.apk and b/.release/EnchantIt.apk differ
diff --git a/.release/Release.md b/.release/Release.md
index 00c989c..b2c5bd3 100644
--- a/.release/Release.md
+++ b/.release/Release.md
@@ -1,3 +1,6 @@
-_Changes for v 3.4.2_:
+_Changes for v 3.5_:
+- Background service code has been reworked, a number of compatibility issues with Android 13 have been fixed;
+- App permissions checker has been rewritten;
+- Tips storage has been rewritten (may cause their repeating once more);
- Update for XPUN has been applied;
- Video guides have been updated
diff --git a/Changes.log b/Changes.log
index e0a7974..444e2e5 100644
--- a/Changes.log
+++ b/Changes.log
@@ -1,5 +1,10 @@
PA detector: changes log
+Version 3.5:
+• Background service code has been reworked, a number of compatibility issues with Android 13 have been fixed;
+• App permissions checker has been rewritten;
+• Tips storage has been rewritten (may cause their repeating once more)
+
Version 3.4.2:
• Update for XPUN has been applied
diff --git a/src/AboutPage.xaml b/src/AboutPage.xaml
index f03975a..16756b6 100644
--- a/src/AboutPage.xaml
+++ b/src/AboutPage.xaml
@@ -17,6 +17,9 @@
+
+
+
diff --git a/src/App.xaml.cs b/src/App.xaml.cs
index 5d44236..e19217d 100644
--- a/src/App.xaml.cs
+++ b/src/App.xaml.cs
@@ -1,5 +1,4 @@
using Android.Net;
-using Android.Util;
using Java.Security;
using System;
using System.Collections.Generic;
@@ -69,6 +68,8 @@ private enum GenerationMethods
private bool stopGeneration = false;
private double oldScale = 0, newScale = 0;
+ private RDAppStartupFlags flags;
+
// Множитель шкалы для регистратора отклонений ГПСЧ
private const double scaleSizeFactor = 8.0;
@@ -157,10 +158,11 @@ private readonly Color
///
/// Конструктор. Точка входа приложения
///
- public App (bool Huawei)
+ public App (RDAppStartupFlags Flags)
{
// Инициализация
InitializeComponent ();
+ flags = Flags;
// Общая конструкция страниц приложения
MainPage = new MasterPage ();
@@ -247,6 +249,29 @@ public App (bool Huawei)
RDLocale.GetDefaultText (RDLDefaultTexts.Control_GenericSettings),
RDLabelTypes.HeaderLeft);
+ // Управление правами
+ Label allowServiceTip;
+ Button allowServiceButton;
+ if (!Flags.HasFlag (RDAppStartupFlags.CanWriteFiles))
+ {
+ allowServiceTip = AndroidSupport.ApplyLabelSettings (aboutPage, "AllowWritingTip",
+ RDLocale.GetDefaultText (RDLDefaultTexts.Message_ReadWritePermission), RDLabelTypes.ErrorTip);
+
+ allowServiceButton = AndroidSupport.ApplyButtonSettings (aboutPage, "AllowWritingButton",
+ RDLocale.GetDefaultText (RDLDefaultTexts.Button_Open), aboutFieldBackColor, CallAppSettings, false);
+ allowServiceButton.HorizontalOptions = LayoutOptions.Center;
+ }
+ else
+ {
+ allowServiceTip = AndroidSupport.ApplyLabelSettings (aboutPage, "AllowWritingTip",
+ " ", RDLabelTypes.Tip);
+ allowServiceTip.IsVisible = false;
+
+ allowServiceButton = AndroidSupport.ApplyButtonSettings (aboutPage, "AllowWritingButton",
+ " ", aboutFieldBackColor, null, false);
+ allowServiceButton.IsVisible = false;
+ }
+
// Кнопки управления
AndroidSupport.ApplyLabelSettings (aboutPage, "RestartTipLabel",
RDLocale.GetDefaultText (RDLDefaultTexts.Message_RestartRequired),
@@ -361,14 +386,15 @@ public App (bool Huawei)
countOfMatches = 0; // Признак отмены обновления при отсутствии результатов
// Отображение подсказок первого старта
- ShowTips (Huawei);
+ ShowTips ();
}
// Метод отображает подсказки при первом запуске
- private async void ShowTips (bool Huawei)
+ private async void ShowTips ()
{
// Контроль XPUN
- await AndroidSupport.XPUNLoop (Huawei);
+ if (!flags.HasFlag (RDAppStartupFlags.Huawei))
+ await AndroidSupport.XPUNLoop ();
// Защита
if (firstStart)
@@ -411,6 +437,12 @@ protected override void OnSleep ()
catch { }
}
+ // Вызов настроек приложения (для Android 12 и выше)
+ private void CallAppSettings (object sender, EventArgs e)
+ {
+ AndroidSupport.CallAppSettings ();
+ }
+
#endregion
#region О приложении
diff --git a/src/MainActivity.cs b/src/MainActivity.cs
index cf1274b..16ac218 100644
--- a/src/MainActivity.cs
+++ b/src/MainActivity.cs
@@ -65,14 +65,17 @@ protected override void OnCreate (Bundle savedInstanceState)
// Запрет на переход в ждущий режим
this.Window.AddFlags (WindowManagerFlags.KeepScreenOn);
-#if HUAWEI
- LoadApplication (new App (true));
-#else
- LoadApplication (new App (false));
-#endif
+ /*#if HUAWEI
+ LoadApplication (new App (true));
+ #else
+ LoadApplication (new App (false));
+ #endif*/
+ RDAppStartupFlags flags = AndroidSupportX.GetAppStartupFlags (RDAppStartupFlags.Huawei |
+ RDAppStartupFlags.CanWriteFiles, this);
+ LoadApplication (new App (flags));
}
- ///
+ /*///
/// Запрос разрешений для приложения
///
public override void OnRequestPermissionsResult (int requestCode, string[] permissions,
@@ -81,6 +84,6 @@ public override void OnRequestPermissionsResult (int requestCode, string[] permi
Xamarin.Essentials.Platform.OnRequestPermissionsResult (requestCode, permissions, grantResults);
base.OnRequestPermissionsResult (requestCode, permissions, grantResults);
- }
+ }*/
}
}