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") + ) + ) + } + } }