Guest User

Untitled

a guest
Nov 12th, 2019
174
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Kotlin 2.36 KB | None | 0 0
  1. import android.app.Notification
  2. import android.app.NotificationChannel
  3. import android.app.NotificationManager
  4. import android.app.PendingIntent
  5. import android.content.Context
  6. import android.content.Intent
  7. import android.os.Build
  8. import android.os.Handler
  9. import android.util.Log
  10. import android.widget.Toast
  11. import androidx.annotation.RequiresApi
  12. import androidx.core.app.NotificationCompat
  13. import androidx.work.Worker
  14. import androidx.work.WorkerParameters
  15.  
  16. const val CHANNEL_ID = "id"
  17. const val CHANNEL_NAME = "ToastWorker"
  18.  
  19. @RequiresApi(Build.VERSION_CODES.O)
  20. class ToastWorker(context: Context, workerParams: WorkerParameters) : Worker(context, workerParams) {
  21.  
  22.     override fun doWork(): Result {
  23.         val message = inputData.getString("message")
  24.         val title = inputData.getString("title")
  25.         val builder = getBuilder(title.toString(), message.toString(), applicationContext)
  26.         notificationManager.notify(0, builder?.build())
  27.         return Result.success()
  28.     }
  29.  
  30.     private val notificationManager by lazy {
  31.         context.getSystemService(Context.NOTIFICATION_SERVICE)
  32.                 as NotificationManager
  33.     }
  34.  
  35.     private val vibrationPatternArr by lazy {
  36.         longArrayOf(100, 200, 300, 400, 500, 400, 500, 200, 500)
  37.     }
  38.  
  39.     init {
  40.         val notificationChannel = NotificationChannel(
  41.             CHANNEL_ID,
  42.             CHANNEL_NAME,
  43.             NotificationManager.IMPORTANCE_HIGH
  44.         )
  45.  
  46.         notificationChannel.enableLights(true)
  47.         notificationChannel.enableVibration(true)
  48.         notificationChannel.vibrationPattern = vibrationPatternArr
  49.         notificationManager.createNotificationChannel(notificationChannel)
  50.     }
  51.  
  52.     companion object {
  53.         fun getBuilder(title: String, content: String, context: Context): NotificationCompat.Builder? {
  54.             val mainActivityIntent = Intent(context, MainActivity::class.java)
  55.             val pendingIntent = PendingIntent.getActivity(context, 0, mainActivityIntent, PendingIntent.FLAG_UPDATE_CURRENT)
  56.  
  57.             return NotificationCompat.Builder(
  58.                 context.applicationContext, CHANNEL_ID
  59.             ).setContentTitle(title)
  60.                 .setContentText(content)
  61.                 .setContentIntent(pendingIntent)
  62.                 .setSmallIcon(R.mipmap.ic_launcher)
  63.                 .setAutoCancel(true)
  64.         }
  65.  
  66.     }
  67.  
  68. }
Advertisement
Add Comment
Please, Sign In to add comment