Skip to content

Commit 644ca2a

Browse files
build: Update dependencies and refactor notification permission request
- Updated Android Gradle Plugin to 8.13.0. - Updated Kotlin to 2.2.20. - Updated `workRuntimeKtx` to version 2.10.4. - Refactored `requestNotificationsPermission` in `SleepTileService.kt` to handle different Android versions. - Added `@RequiresApi(N_SDK_INT)` annotation to `SleepTileService`. - Conditionally set `setChronometerCountDown` and `setTimeoutAfter` in `SleepNotification.kt` based on SDK version.
1 parent 4e5eea7 commit 644ca2a

File tree

3 files changed

+36
-13
lines changed

3 files changed

+36
-13
lines changed

app/src/main/kotlin/com/d4rk/musicsleeptimer/plus/notifications/SleepNotification.kt

Lines changed: 8 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -100,9 +100,14 @@ object SleepNotification {
100100
.setSubText(DateFormat.getTimeInstance(SHORT).format(Date(eta)))
101101
.setShowWhen(true)
102102
.setWhen(eta)
103-
.setUsesChronometer(true)
104-
.setChronometerCountDown(true)
105-
.setTimeoutAfter(timeout)
103+
.setUsesChronometer(true).apply {
104+
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) {
105+
setChronometerCountDown(true)
106+
}
107+
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
108+
setTimeoutAfter(timeout)
109+
}
110+
}
106111
.apply {
107112
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
108113
setDeleteIntent(SleepAudioWorker.pendingIntent(this@show))

app/src/main/kotlin/com/d4rk/musicsleeptimer/plus/services/SleepTileService.kt

Lines changed: 25 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -4,13 +4,15 @@ import android.app.Notification
44
import android.content.ComponentName
55
import android.content.Context
66
import android.content.Intent
7+
import android.net.Uri
78
import android.os.Build
89
import android.os.Build.VERSION.SDK_INT
910
import android.os.Build.VERSION_CODES.Q
1011
import android.provider.Settings
1112
import android.service.quicksettings.Tile.STATE_ACTIVE
1213
import android.service.quicksettings.Tile.STATE_INACTIVE
1314
import android.service.quicksettings.TileService
15+
import androidx.annotation.RequiresApi
1416
import com.d4rk.musicsleeptimer.plus.R
1517
import com.d4rk.musicsleeptimer.plus.notifications.SleepNotification.find
1618
import com.d4rk.musicsleeptimer.plus.notifications.SleepNotification.handle
@@ -19,7 +21,9 @@ import com.d4rk.musicsleeptimer.plus.notifications.SleepNotification.toggle
1921
import java.text.DateFormat.SHORT
2022
import java.text.DateFormat.getTimeInstance
2123
import java.util.Date
24+
import android.os.Build.VERSION_CODES.N as N_SDK_INT
2225

26+
@RequiresApi(N_SDK_INT)
2327
class SleepTileService : TileService() {
2428
companion object {
2529
fun Context.requestTileUpdate() =
@@ -55,17 +59,31 @@ class SleepTileService : TileService() {
5559
updateTile()
5660
} ?: Unit
5761

58-
private fun requestNotificationsPermission() =
59-
if (SDK_INT >= Build.VERSION_CODES.UPSIDE_DOWN_CAKE) {
62+
private fun requestNotificationsPermission() {
63+
when {
64+
SDK_INT >= Build.VERSION_CODES.UPSIDE_DOWN_CAKE -> {
65+
val intent = Intent(Settings.ACTION_APP_NOTIFICATION_SETTINGS).apply {
66+
addFlags(Intent.FLAG_ACTIVITY_NEW_TASK)
67+
putExtra(Settings.EXTRA_APP_PACKAGE, packageName)
68+
}
69+
startActivity(intent)
70+
}
71+
72+
SDK_INT >= Build.VERSION_CODES.O -> {
6073
Intent(Settings.ACTION_APP_NOTIFICATION_SETTINGS).apply {
6174
addFlags(Intent.FLAG_ACTIVITY_NEW_TASK)
6275
putExtra(Settings.EXTRA_APP_PACKAGE , packageName)
63-
}.let(::startActivity)
76+
}.let(::startActivityAndCollapse) // FIXME: 'fun startActivityAndCollapse(intent: Intent!): Unit' is deprecated. Deprecated in Java.
6477
}
65-
else {
66-
@Suppress("DEPRECATION") Intent(Settings.ACTION_APP_NOTIFICATION_SETTINGS).apply {
78+
79+
else -> {
80+
val intent = Intent(Settings.ACTION_APPLICATION_DETAILS_SETTINGS).apply {
6781
addFlags(Intent.FLAG_ACTIVITY_NEW_TASK)
68-
putExtra(Settings.EXTRA_APP_PACKAGE , packageName)
69-
}.let(::startActivityAndCollapse)
82+
data = Uri.fromParts("package", packageName, null)
83+
}
84+
startActivity(intent)
7085
}
86+
}
87+
}
88+
7189
}

gradle/libs.versions.toml

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,12 @@
11
[versions]
2-
agp = "8.12.2"
2+
agp = "8.13.0"
33
appcompat = "1.7.1"
44
firebaseBom = "34.2.0"
5-
kotlin = "2.2.10"
5+
kotlin = "2.2.20"
66
google-firebase-crashlytics = "3.0.6"
77
google-services = "4.4.3"
88
multidex = "2.0.1"
9-
workRuntimeKtx = "2.10.3"
9+
workRuntimeKtx = "2.10.4"
1010

1111
[libraries]
1212
appcompat = { module = "androidx.appcompat:appcompat", version.ref = "appcompat" }

0 commit comments

Comments
 (0)