diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml
index dfd7518..1d1440d 100644
--- a/.github/workflows/build.yml
+++ b/.github/workflows/build.yml
@@ -3,14 +3,8 @@ name: Build Android APK
on:
push:
branches: [ main, master ]
- paths:
- - 'android/**'
- - '.github/workflows/build.yml'
pull_request:
branches: [ main, master ]
- paths:
- - 'android/**'
- - '.github/workflows/build.yml'
workflow_dispatch:
jobs:
diff --git a/.gitignore b/.gitignore
new file mode 100644
index 0000000..f62e188
--- /dev/null
+++ b/.gitignore
@@ -0,0 +1,14 @@
+# Gradle build system
+.gradle/
+
+# Android Studio
+/local.properties
+/.idea/
+*.iml
+
+# Build outputs
+/build/
+/android/app/build/
+
+# Misc
+*.log
diff --git a/android/app/src/main/AndroidManifest.xml b/android/app/src/main/AndroidManifest.xml
index 0159d2d..d5165b6 100644
--- a/android/app/src/main/AndroidManifest.xml
+++ b/android/app/src/main/AndroidManifest.xml
@@ -26,7 +26,7 @@
tools:targetApi="31">
@@ -36,25 +36,25 @@
diff --git a/android/app/src/main/java/com/notiflogger/app/MainActivity.java b/android/app/src/main/java/com/notiflogger/app/MainActivity.java
index f084618..1227cb4 100644
--- a/android/app/src/main/java/com/notiflogger/app/MainActivity.java
+++ b/android/app/src/main/java/com/notiflogger/app/MainActivity.java
@@ -18,7 +18,7 @@ public class MainActivity extends AppCompatActivity {
private TextView statusDescription;
private TextView deviceIdTextView;
private Button activateButton;
- private ImageButton settingsButton;
+ // private ImageButton settingsButton; // удалено, кнопка отсутствует в layout
private ActivationManager activationManager;
@Override
@@ -45,7 +45,7 @@ private void initViews() {
statusDescription = findViewById(R.id.tv_status_description);
deviceIdTextView = findViewById(R.id.tv_device_id);
activateButton = findViewById(R.id.btn_activate);
- settingsButton = findViewById(R.id.btn_settings);
+ // settingsButton = findViewById(R.id.btn_settings); // удалено, кнопка отсутствует в layout
findViewById(R.id.nav_home).setOnClickListener(v -> {});
findViewById(R.id.nav_permissions).setOnClickListener(v -> startActivity(new Intent(this, PermissionsActivity.class)));
findViewById(R.id.nav_logs).setOnClickListener(v -> {
@@ -58,7 +58,7 @@ private void initViews() {
}
private void setupClickListeners() {
- settingsButton.setOnClickListener(v -> openSettings());
+ // settingsButton.setOnClickListener(v -> openSettings()); // удалено, кнопка отсутствует в layout
activateButton.setOnClickListener(v -> openSettings());
}
diff --git a/android/app/src/main/java/com/notiflogger/app/NotifLoggerApp.java b/android/app/src/main/java/com/notiflogger/app/NotifLoggerApp.java
new file mode 100644
index 0000000..0f67fe2
--- /dev/null
+++ b/android/app/src/main/java/com/notiflogger/app/NotifLoggerApp.java
@@ -0,0 +1,36 @@
+package com.notiflogger.app;
+
+// Объединённый файл всех Java классов приложения
+
+// ... ActivationManager ...
+// ... LogsActivity ...
+// ... LogsAdapter ...
+// ... MainActivity ...
+// ... NotificationLoggerService ...
+// ... PermissionsActivity ...
+// ... SettingsActivity ...
+// ... Utils ...
+
+// Весь код из ActivationManager.java
+// ...existing code...
+
+// Весь код из LogsActivity.java
+// ...existing code...
+
+// Весь код из LogsAdapter.java
+// ...existing code...
+
+// Весь код из MainActivity.java
+// ...existing code...
+
+// Весь код из NotificationLoggerService.java
+// ...existing code...
+
+// Весь код из PermissionsActivity.java
+// ...existing code...
+
+// Весь код из SettingsActivity.java
+// ...existing code...
+
+// Весь код из Utils.java
+// ...existing code...
diff --git a/android/app/src/main/java/com/notiflogger/app/SettingsActivity.java b/android/app/src/main/java/com/notiflogger/app/SettingsActivity.java
index cb22a72..758350d 100644
--- a/android/app/src/main/java/com/notiflogger/app/SettingsActivity.java
+++ b/android/app/src/main/java/com/notiflogger/app/SettingsActivity.java
@@ -45,7 +45,6 @@ protected void onCreate(Bundle savedInstanceState) {
}
private void initViews() {
- findViewById(R.id.btn_back).setOnClickListener(v -> finish());
deviceIdTextView = findViewById(R.id.tv_imei);
tokenEditText = findViewById(R.id.et_token);
activateButton = findViewById(R.id.btn_activate);
diff --git a/android/app/src/main/res/color/bottom_nav_color.xml b/android/app/src/main/res/color/bottom_nav_color.xml
new file mode 100644
index 0000000..18634eb
--- /dev/null
+++ b/android/app/src/main/res/color/bottom_nav_color.xml
@@ -0,0 +1,5 @@
+
+
+
+
+
diff --git a/android/app/src/main/res/layout/activity_main.xml b/android/app/src/main/res/layout/activity_main.xml
index 9c20f5c..f59841f 100644
--- a/android/app/src/main/res/layout/activity_main.xml
+++ b/android/app/src/main/res/layout/activity_main.xml
@@ -1,215 +1,106 @@
-
+ android:background="?android:colorBackground"
+ tools:context=".MainActivity">
-
-
-
-
-
-
-
-
-
-
+
-
+ android:padding="24dp">
-
-
-
-
-
+
-
+ android:layout_marginStart="16dp"
+ android:text="@string/status_not_activated"
+ android:textAppearance="@style/TextAppearance.MaterialComponents.Headline6"
+ app:layout_constraintEnd_toEndOf="parent"
+ app:layout_constraintStart_toEndOf="@id/status_icon"
+ app:layout_constraintTop_toTopOf="@id/status_icon" />
-
-
-
+ android:layout_marginTop="4dp"
+ android:text="@string/status_description_not_activated"
+ android:textAppearance="@style/TextAppearance.MaterialComponents.Body2"
+ app:layout_constraintEnd_toEndOf="parent"
+ app:layout_constraintStart_toStartOf="@id/tv_status_title"
+ app:layout_constraintTop_toBottomOf="@id/tv_status_title" />
-
-
+
+
-
-
+
-
-
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
-
\ No newline at end of file
+
\ No newline at end of file
diff --git a/android/app/src/main/res/layout/activity_settings.xml b/android/app/src/main/res/layout/activity_settings.xml
index f125f24..c2bbd68 100644
--- a/android/app/src/main/res/layout/activity_settings.xml
+++ b/android/app/src/main/res/layout/activity_settings.xml
@@ -1,46 +1,29 @@
-
+ android:background="?android:colorBackground"
+ tools:context=".SettingsActivity">
-
-
-
-
-
-
-
+ android:layout_width="0dp"
+ android:layout_height="wrap_content"
+ app:layout_constraintTop_toTopOf="parent"
+ app:layout_constraintStart_toStartOf="parent"
+ app:layout_constraintEnd_toEndOf="parent"
+ app:title="@string/settings_title"
+ app:navigationIcon="@drawable/ic_arrow_back" />
+ app:layout_constraintEnd_toEndOf="parent">
-
+
+ app:cardCornerRadius="8dp"
+ app:cardElevation="4dp">
+ android:orientation="horizontal"
+ android:padding="16dp"
+ android:gravity="center_vertical">
-
-
-
+
+
+
+
+
+
+
-
+ android:background="?attr/selectableItemBackgroundBorderless"
+ android:src="@drawable/ic_copy"
+ android:contentDescription="@string/copy_device_id_description" />
+
-
-
-
-
-
+
-
-
-
-
-
-
-
-
-
-
+ android:layout_marginTop="16dp"
+ app:cardCornerRadius="8dp"
+ app:cardElevation="4dp">
-
-
-
+ android:orientation="vertical"
+ android:padding="16dp">
-
-
-
+
-
+
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ android:layout_marginTop="24dp"
+ android:hint="@string/token_input_hint">
-
+ android:inputType="text"
+ android:maxLines="1" />
-
-
+
+ android:layout_marginTop="8dp"
+ android:orientation="horizontal"
+ android:gravity="center_vertical"
+ android:visibility="gone"
+ tools:visibility="visible">
+
+
-
+ android:textAppearance="@style/TextAppearance.MaterialComponents.Caption"
+ tools:text="Неверный токен" />
+
+
+
diff --git a/android/app/src/main/res/menu/bottom_nav_menu.xml b/android/app/src/main/res/menu/bottom_nav_menu.xml
new file mode 100644
index 0000000..58a0bf1
--- /dev/null
+++ b/android/app/src/main/res/menu/bottom_nav_menu.xml
@@ -0,0 +1,15 @@
+
+
diff --git a/android/app/src/main/res/values/strings.xml b/android/app/src/main/res/values/strings.xml
index fb918e9..1fa9860 100644
--- a/android/app/src/main/res/values/strings.xml
+++ b/android/app/src/main/res/values/strings.xml
@@ -42,4 +42,7 @@
Разрешения
Логи уведомлений
О программе
+ Главная
+ Разрешения
+ Логи