ForegroundInfo作成時にforegroundServiceTypeを指定する
This commit is contained in:
parent
3b443aff9f
commit
d30aa1ba4a
|
@ -1,10 +1,12 @@
|
||||||
package jp.juggler.subwaytooter.notification
|
package jp.juggler.subwaytooter.notification
|
||||||
|
|
||||||
import android.Manifest
|
import android.Manifest
|
||||||
|
import android.annotation.SuppressLint
|
||||||
import android.app.NotificationChannel
|
import android.app.NotificationChannel
|
||||||
import android.app.PendingIntent
|
import android.app.PendingIntent
|
||||||
import android.content.Context
|
import android.content.Context
|
||||||
import android.content.pm.PackageManager
|
import android.content.pm.PackageManager
|
||||||
|
import android.content.pm.ServiceInfo.FOREGROUND_SERVICE_TYPE_DATA_SYNC
|
||||||
import android.os.Build
|
import android.os.Build
|
||||||
import androidx.annotation.ColorInt
|
import androidx.annotation.ColorInt
|
||||||
import androidx.annotation.DrawableRes
|
import androidx.annotation.DrawableRes
|
||||||
|
@ -23,12 +25,15 @@ import jp.juggler.util.log.LogCategory
|
||||||
|
|
||||||
private val log = LogCategory("NotificationChannels")
|
private val log = LogCategory("NotificationChannels")
|
||||||
|
|
||||||
|
@SuppressLint("InlinedApi")
|
||||||
enum class NotificationChannels(
|
enum class NotificationChannels(
|
||||||
val id: String,
|
val id: String,
|
||||||
@StringRes val titleId: Int,
|
@StringRes val titleId: Int,
|
||||||
@StringRes val descId: Int,
|
@StringRes val descId: Int,
|
||||||
val importance: Int,
|
val importance: Int,
|
||||||
val priority: Int,
|
val priority: Int,
|
||||||
|
// foreground service type,
|
||||||
|
val foregroundServiceType: Int,
|
||||||
// 通知ID。(ID+tagでユニーク)
|
// 通知ID。(ID+tagでユニーク)
|
||||||
val notificationId: Int,
|
val notificationId: Int,
|
||||||
// PendingIntentのrequestCode。(ID+intentのdata Uriでユニーク)
|
// PendingIntentのrequestCode。(ID+intentのdata Uriでユニーク)
|
||||||
|
@ -47,6 +52,7 @@ enum class NotificationChannels(
|
||||||
descId = R.string.pull_notification_desc,
|
descId = R.string.pull_notification_desc,
|
||||||
importance = NotificationManagerCompat.IMPORTANCE_DEFAULT,
|
importance = NotificationManagerCompat.IMPORTANCE_DEFAULT,
|
||||||
priority = NotificationCompat.PRIORITY_DEFAULT,
|
priority = NotificationCompat.PRIORITY_DEFAULT,
|
||||||
|
foregroundServiceType = FOREGROUND_SERVICE_TYPE_DATA_SYNC,
|
||||||
notificationId = 1,
|
notificationId = 1,
|
||||||
pircTap = 1,
|
pircTap = 1,
|
||||||
pircDelete = 1, // uriでtapとdeleteを区別している
|
pircDelete = 1, // uriでtapとdeleteを区別している
|
||||||
|
@ -59,6 +65,7 @@ enum class NotificationChannels(
|
||||||
descId = R.string.polling_foregrounder_desc,
|
descId = R.string.polling_foregrounder_desc,
|
||||||
importance = NotificationManagerCompat.IMPORTANCE_LOW,
|
importance = NotificationManagerCompat.IMPORTANCE_LOW,
|
||||||
priority = NotificationCompat.PRIORITY_MIN,
|
priority = NotificationCompat.PRIORITY_MIN,
|
||||||
|
foregroundServiceType = FOREGROUND_SERVICE_TYPE_DATA_SYNC,
|
||||||
notificationId = 2,
|
notificationId = 2,
|
||||||
pircTap = 2,
|
pircTap = 2,
|
||||||
pircDelete = -1,
|
pircDelete = -1,
|
||||||
|
@ -71,6 +78,7 @@ enum class NotificationChannels(
|
||||||
descId = R.string.server_timeout_desc,
|
descId = R.string.server_timeout_desc,
|
||||||
importance = NotificationManagerCompat.IMPORTANCE_LOW,
|
importance = NotificationManagerCompat.IMPORTANCE_LOW,
|
||||||
priority = NotificationCompat.PRIORITY_LOW,
|
priority = NotificationCompat.PRIORITY_LOW,
|
||||||
|
foregroundServiceType = FOREGROUND_SERVICE_TYPE_DATA_SYNC,
|
||||||
notificationId = 3,
|
notificationId = 3,
|
||||||
pircTap = 3,
|
pircTap = 3,
|
||||||
pircDelete = 4,
|
pircDelete = 4,
|
||||||
|
@ -83,6 +91,7 @@ enum class NotificationChannels(
|
||||||
descId = R.string.push_message_desc,
|
descId = R.string.push_message_desc,
|
||||||
importance = NotificationManagerCompat.IMPORTANCE_HIGH,
|
importance = NotificationManagerCompat.IMPORTANCE_HIGH,
|
||||||
priority = NotificationCompat.PRIORITY_HIGH,
|
priority = NotificationCompat.PRIORITY_HIGH,
|
||||||
|
foregroundServiceType = FOREGROUND_SERVICE_TYPE_DATA_SYNC,
|
||||||
notificationId = 5,
|
notificationId = 5,
|
||||||
pircTap = 5,
|
pircTap = 5,
|
||||||
pircDelete = 6,
|
pircDelete = 6,
|
||||||
|
@ -95,6 +104,7 @@ enum class NotificationChannels(
|
||||||
descId = R.string.alert_notification_desc,
|
descId = R.string.alert_notification_desc,
|
||||||
importance = NotificationManagerCompat.IMPORTANCE_HIGH,
|
importance = NotificationManagerCompat.IMPORTANCE_HIGH,
|
||||||
priority = NotificationCompat.PRIORITY_HIGH,
|
priority = NotificationCompat.PRIORITY_HIGH,
|
||||||
|
foregroundServiceType = FOREGROUND_SERVICE_TYPE_DATA_SYNC,
|
||||||
notificationId = 7,
|
notificationId = 7,
|
||||||
pircTap = 7,
|
pircTap = 7,
|
||||||
pircDelete = 8,
|
pircDelete = 8,
|
||||||
|
@ -107,6 +117,7 @@ enum class NotificationChannels(
|
||||||
descId = R.string.push_worker_desc,
|
descId = R.string.push_worker_desc,
|
||||||
importance = NotificationManagerCompat.IMPORTANCE_LOW,
|
importance = NotificationManagerCompat.IMPORTANCE_LOW,
|
||||||
priority = NotificationCompat.PRIORITY_LOW,
|
priority = NotificationCompat.PRIORITY_LOW,
|
||||||
|
foregroundServiceType = FOREGROUND_SERVICE_TYPE_DATA_SYNC,
|
||||||
notificationId = 9,
|
notificationId = 9,
|
||||||
pircTap = 9,
|
pircTap = 9,
|
||||||
pircDelete = 10,
|
pircDelete = 10,
|
||||||
|
@ -118,7 +129,7 @@ enum class NotificationChannels(
|
||||||
|
|
||||||
fun isDisabled(context: Context) = !isEnabled(context)
|
fun isDisabled(context: Context) = !isEnabled(context)
|
||||||
|
|
||||||
fun isEnabled(context: Context): Boolean {
|
private fun isEnabled(context: Context): Boolean {
|
||||||
if (Build.VERSION.SDK_INT >= 33) {
|
if (Build.VERSION.SDK_INT >= 33) {
|
||||||
if (ActivityCompat.checkSelfPermission(
|
if (ActivityCompat.checkSelfPermission(
|
||||||
context,
|
context,
|
||||||
|
@ -202,7 +213,11 @@ enum class NotificationChannels(
|
||||||
setWhen(System.currentTimeMillis())
|
setWhen(System.currentTimeMillis())
|
||||||
setOngoing(true)
|
setOngoing(true)
|
||||||
}
|
}
|
||||||
return ForegroundInfo(nc.notificationId, builder.build())
|
return ForegroundInfo(
|
||||||
|
nc.notificationId,
|
||||||
|
builder.build(),
|
||||||
|
nc.foregroundServiceType,
|
||||||
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
fun cancel(context: Context, tag: String? = null) {
|
fun cancel(context: Context, tag: String? = null) {
|
||||||
|
|
Loading…
Reference in New Issue