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
6 years ago
|
/*
|
||
|
* 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
|
||
|
}
|
||
|
|
||
|
}
|