mirror of https://github.com/etesync/android
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
78 lines
3.3 KiB
78 lines
3.3 KiB
/*
|
|
* Copyright © Ricki Hirner (bitfire web engineering).
|
|
* All rights reserved. This program and the accompanying materials
|
|
* are made available under the terms of the GNU Public License v3.0
|
|
* which accompanies this distribution, and is available at
|
|
* http://www.gnu.org/licenses/gpl.html
|
|
*/
|
|
|
|
package com.etesync.syncadapter.utils
|
|
|
|
import android.annotation.TargetApi
|
|
import android.app.NotificationChannel
|
|
import android.app.NotificationChannelGroup
|
|
import android.app.NotificationManager
|
|
import android.content.Context
|
|
import android.os.Build
|
|
import androidx.core.app.NotificationCompat
|
|
import com.etesync.syncadapter.App
|
|
import com.etesync.syncadapter.R
|
|
|
|
object NotificationUtils {
|
|
|
|
// notification IDs
|
|
const val NOTIFY_EXTERNAL_FILE_LOGGING = 1
|
|
const val NOTIFY_REFRESH_COLLECTIONS = 2
|
|
const val NOTIFY_SYNC_ERROR = 10
|
|
const val NOTIFY_INVALID_RESOURCE = 11
|
|
const val NOTIFY_OPENTASKS = 20
|
|
const val NOTIFY_PERMISSIONS = 21
|
|
const val NOTIFY_LICENSE = 100
|
|
|
|
// notification channels
|
|
const val CHANNEL_GENERAL = "general"
|
|
const val CHANNEL_DEBUG = "debug"
|
|
|
|
private const val CHANNEL_SYNC = "sync"
|
|
const val CHANNEL_SYNC_ERRORS = "syncProblems"
|
|
const val CHANNEL_SYNC_WARNINGS = "syncWarnings"
|
|
const val CHANNEL_SYNC_STATUS = "syncStatus"
|
|
|
|
|
|
fun createChannels(context: Context) {
|
|
@TargetApi(Build.VERSION_CODES.O)
|
|
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
|
|
val nm = context.getSystemService(Context.NOTIFICATION_SERVICE) as NotificationManager
|
|
|
|
nm.createNotificationChannelGroup(NotificationChannelGroup(CHANNEL_SYNC, context.getString(R.string.notification_channel_sync)))
|
|
|
|
nm.createNotificationChannels(listOf(
|
|
NotificationChannel(CHANNEL_DEBUG, context.getString(R.string.notification_channel_debugging), NotificationManager.IMPORTANCE_HIGH),
|
|
NotificationChannel(CHANNEL_GENERAL, context.getString(R.string.notification_channel_general), NotificationManager.IMPORTANCE_DEFAULT),
|
|
|
|
NotificationChannel(CHANNEL_SYNC_ERRORS, context.getString(R.string.notification_channel_sync_errors), NotificationManager.IMPORTANCE_DEFAULT).apply {
|
|
description = context.getString(R.string.notification_channel_sync_errors_desc)
|
|
group = CHANNEL_SYNC
|
|
},
|
|
NotificationChannel(CHANNEL_SYNC_WARNINGS, context.getString(R.string.notification_channel_sync_warnings), NotificationManager.IMPORTANCE_LOW).apply {
|
|
description = context.getString(R.string.notification_channel_sync_warnings_desc)
|
|
group = CHANNEL_SYNC
|
|
},
|
|
NotificationChannel(CHANNEL_SYNC_STATUS, context.getString(R.string.notification_channel_sync_status), NotificationManager.IMPORTANCE_LOW).apply {
|
|
description = context.getString(R.string.notification_channel_sync_status_desc)
|
|
group = CHANNEL_SYNC
|
|
}
|
|
))
|
|
}
|
|
}
|
|
|
|
fun newBuilder(context: Context, channel: String): NotificationCompat.Builder {
|
|
val builder = NotificationCompat.Builder(context, channel)
|
|
|
|
if (Build.VERSION.SDK_INT < Build.VERSION_CODES.N)
|
|
builder.setLargeIcon(App.getLauncherBitmap(context))
|
|
|
|
return builder
|
|
}
|
|
|
|
} |