diff --git a/app/build.gradle.kts b/app/build.gradle.kts
index f73afa8..1db7806 100644
--- a/app/build.gradle.kts
+++ b/app/build.gradle.kts
@@ -15,8 +15,8 @@ android {
applicationId = "com.radiola"
minSdk = 26
targetSdk = 34
- versionCode = 4
- versionName = "1.3"
+ versionCode = 5
+ versionName = "1.4"
testInstrumentationRunner = "androidx.test.runner.AndroidJUnitRunner"
vectorDrawables {
diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index 3e76813..e6377e0 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -16,6 +16,8 @@
+
+
= 33 &&
+ checkSelfPermission(android.Manifest.permission.POST_NOTIFICATIONS) !=
+ android.content.pm.PackageManager.PERMISSION_GRANTED
+ ) {
+ // После ответа (в колбэке) попросим про батарею — не два диалога разом.
+ notifPermLauncher.launch(android.Manifest.permission.POST_NOTIFICATIONS)
+ } else {
+ maybeRequestBatteryExemption()
+ }
+ }
+
+ private fun maybeRequestBatteryExemption() {
+ val pm = getSystemService(Context.POWER_SERVICE) as android.os.PowerManager
+ if (pm.isIgnoringBatteryOptimizations(packageName)) return
+ // Спрашиваем один раз на установку, чтобы не надоедать.
+ val prefs = getSharedPreferences("radiola_prefs", MODE_PRIVATE)
+ if (prefs.getBoolean("battery_opt_asked", false)) return
+ prefs.edit().putBoolean("battery_opt_asked", true).apply()
+ runCatching {
+ startActivity(
+ Intent(
+ android.provider.Settings.ACTION_REQUEST_IGNORE_BATTERY_OPTIMIZATIONS,
+ android.net.Uri.parse("package:$packageName")
+ )
+ )
+ }
+ }
}