package Ġcom . product ivity . full m ange ment . utils Ċ Ċ import Ġandroid . app . Notification Ċ import Ġandroid . app . Notification Channel Ċ import Ġandroid . app . Notification Manager Ċ import Ġandroid . app . Pending Intent Ċ import Ġandroid . content . Context Ċ import Ġandroid . content . Intent Ċ import Ġandroid . graphics . Bitmap Factory Ċ import Ġandroid . graphics . Color Ċ import Ġandroid . media . Audio Attributes Ċ import Ġandroid . net . Uri Ċ import Ġandroid . os . Build Ċ import Ġandroidx . core . app . Notification Compat Ċ import Ġandroidx . core . app . Notification Manager Compat Ċ import Ġandroidx . core . app . Task Stack Builder Ċ import Ġandroidx . core . content . Context Compat Ċ import Ġandroidx . core . content . Context Compat . getSystem Service Ċ import Ġcom . product ivity . full m ange ment . R Ċ import Ġcom . product ivity . full m ange ment . ui . main . Home Activity Ċ import Ġtim ber . log . Tim ber Ċ import Ġkotlin . random . Random Ċ Ċ // ĠNotification ĠID . Ċ private Ġval ĠNOT IFICATION _ ID Ġ= Ġ 0 Ċ private Ġval ĠREQUEST _ CODE Ġ= Ġ 0 Ċ private Ġval ĠFLAGS Ġ= Ġ 0 Ċ Ċ fun Ġsend Notification ( ĊĠĠĠ Ġnotification Title : ĠString , ĊĠĠĠ Ġnotification Desc : ĠString , ĊĠĠĠ ĠtaskId : ĠLong , ĊĠĠĠ Ġapplication Context : ĠContext Ċ ) Ġ{ ĊĠĠĠ Ġ// ĠCreate Ġthe Ġcontent Ġintent Ġfor Ġthe Ġnotification , Ġwhich Ġla unches ĊĠĠĠ Ġ// Ġthis Ġactivity ĊĠĠĠ Ġval Ġcontent Intent Ġ= ĠIntent ( application Context , ĠHome Activity :: class . java ). apply Ġ{ ĊĠĠĠĠĠĠĠ Ġaction Ġ= ĠSystem . currentTimeMillis (). toString () ĊĠĠĠĠĠĠĠ Ġput Extra (" taskId ", ĠtaskId ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ// To Ġback Ġto Ġthe ĠAll ĠTasks Ġactivity Ġwhen Ġthe Ġuser Ġpress Ġback Ġafter Ġopen Ġthe Ġtask Ġdetails Ġactivity Ġfrom Ġnotification ĊĠĠĠ Ġval Ġstack Builder Ġ= ĠTask Stack Builder . create ( application Context ) ĊĊĠĠĠ Ġstack Builder . add Next Intent With Parent Stack ( content Intent ) ĊĠĠĠ Ġval Ġcontent Pending Intent Ġ= Ġstack Builder . get Pending Intent ( taskId . toInt (), ĠPending Intent . FLAG _ UPDATE _ CURRENT ) ĊĊĠĠĠ Ġval Ġsummary Intent Ġ= ĠIntent ( application Context , ĠHome Activity :: class . java ) ĊĠĠĠ Ġstack Builder . add Next Intent With Parent Stack ( summary Intent ) ĊĠĠĠ Ġval Ġsummary Pending Intent Ġ= Ġstack Builder . get Pending Intent ( 0 , ĠPending Intent . FLAG _ UPDATE _ CURRENT ) ĊĊĠĠĠ Ġval Ġsound Tasks Ġ= ĠUri . parse (" android . resource ://" Ġ+ Ġapplication Context . packageName Ġ+ Ġ"/" Ġ+ ĠR . raw . iphone ) ĊĠĠĠ Ġval Ġnotification Manager Ġ= ĠNotification Manager Compat . from ( application Context ) ĊĠĠĠ Ġval Ġnotification Compat Builder : ĠNotification Compat . Builder Ġ= ĊĠĠĠĠĠĠĠ ĠNotification Compat . Builder ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġapplication Context , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġapplication Context . getString ( R . string . full _ management _ notification _ channel _ id ) ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġval Ġrandom Number Ġ= ĠRandom . nextInt () ĊĊĠĠĠ Ġif Ġ( Build . VERSION . SDK _ INT Ġ>= ĠBuild . VERSION _ CODES . N ) Ġ{ ĊĠĠĠĠĠĠĠ Ġnotification Compat Builder ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. set Small Icon ( R . drawable . ic _ full _ management _ icon ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. setColor ( application Context . getColor ( R . color . color Accent )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. setContent Title ( notification Title ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. setContent Text ( notification Desc ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. set Only Alert Once ( false ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. setStyle ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠNotification Compat . Big TextStyle () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. big Text ( notification Desc ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. set Group ( application Context . getString ( R . string . group _ key _ full _ management )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. set Sound ( sound Tasks ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. set V ibrate ( long ArrayOf ( 1 0 0 0 , Ġ 1 0 0 0 )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. set Lights ( Color . GREEN , Ġ 3 0 0 0 , Ġ 3 0 0 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. set Priority ( Notification Compat . PRIORITY _ HIGH ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. setContent Intent ( content Pending Intent ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. setAuto Cancel ( true ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. build () ĊĊĠĠĠĠĠĠĠ Ġval Ġsummary Notification Ġ= ĠNotification Compat . Builder ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġapplication Context , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġapplication Context . getString ( R . string . full _ management _ notification _ channel _ id ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. set Small Icon ( R . drawable . ic _ full _ management _ icon ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. setColor ( application Context . getColor ( R . color . color Accent )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. setStyle ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠNotification Compat . Inbox Style () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. add Line ("$ notification Title Ġ$ notification Desc ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. set Priority ( Notification Compat . PRIORITY _ HIGH ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. set Group ( application Context . getString ( R . string . group _ key _ full _ management )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. set Group Alert Behavior ( Notification Compat . GROUP _ ALERT _ CHILD REN ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. set Group Summary ( true ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. setContent Intent ( summary Pending Intent ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. setAuto Cancel ( true ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. build () ĊĊĠĠĠĠĠĠĠ Ġif Ġ( Build . VERSION . SDK _ INT Ġ>= ĠBuild . VERSION _ CODES . O ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcreate Channel ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġapplication Context . getString ( R . string . full _ management _ notification _ channel _ id ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġapplication Context . getString ( R . string . full _ management _ notification _ channel _ name ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsound Tasks , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġapplication Context ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġnotification Manager . notify ( taskId . toInt (), Ġnotification Compat Builder . build ()) ĊĠĠĠĠĠĠĠ Ġnotification Manager . notify ( 0 , Ġsummary Notification ) ĊĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠ Ġnotification Compat Builder ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. set Small Icon ( R . drawable . ic _ full _ management _ icon ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. setColor ( Context Compat . getColor ( application Context , ĠR . color . color Accent )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. set Large Icon ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠBitmap Factory . decode Resource ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġapplication Context . resources , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠR . drawable . ic _ full _ management _ icon ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. setContent Title ( notification Title ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. setContent Text ( notification Desc ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. set V ibrate ( long ArrayOf ( 1 0 0 0 , Ġ 1 0 0 0 )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. set Sound ( sound Tasks ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. set Priority ( Notification Compat . PRIORITY _ HIGH ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. setContent Intent ( content Pending Intent ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. set Only Alert Once ( false ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. setAuto Cancel ( true ) ĊĊĠĠĠĠĠĠĠ Ġval Ġbig TextStyle Ġ= ĠNotification Compat . Big TextStyle () ĊĠĠĠĠĠĠĠ Ġbig TextStyle . set Big Content Title ( notification Title ) ĊĠĠĠĠĠĠĠ Ġbig TextStyle . big Text ( notification Desc ) ĊĠĠĠĠĠĠĠ Ġnotification Compat Builder . setStyle ( big TextStyle ) ĊĊĠĠĠĠĠĠĠ Ġnotification Manager . notify ( taskId . toInt (), Ġnotification Compat Builder . build ()) ĊĠĠĠ Ġ} Ċ } Ċ Ċ fun Ġcreate Channel ( channelId : ĠString , Ġchannel Name : ĠString , Ġsound : ĠUri , Ġcontext : ĠContext ) Ġ{ ĊĠĠĠ Ġif Ġ( Build . VERSION . SDK _ INT Ġ>= ĠBuild . VERSION _ CODES . O ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġnotification Channel Ġ= ĠNotification Channel ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġchannel Id , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġchannel Name , ĊĠĠĠĠĠĠĠĠĠĠĠ ĠNotification Manager . IMPORT ANCE _ HIGH ĊĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠ Ġval Ġaudio Attributes Ġ= ĠAudio Attributes . Builder () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. set ContentType ( Audio Attributes . CONTENT _ TYPE _ SON IFICATION ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. set Usage ( Audio Attributes . USAGE _ ALARM ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. build () ĊĊĠĠĠĠĠĠĠ Ġnotification Channel . apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġset Sound ( sound , Ġaudio Attributes ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠsetShow Badge ( true ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġenable Lights ( true ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlight Color Ġ= ĠColor . GREEN ĊĠĠĠĠĠĠĠĠĠĠĠ Ġenable V ibration ( true ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdescription Ġ= Ġ" notify Ġyou Ġwhen Ġyour Ġtask Ġdeadline Ġapproaches " ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġval Ġnotification Manager Ġ= Ġget System Service ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcontext , ĊĠĠĠĠĠĠĠĠĠĠĠ ĠNotification Manager :: class . java ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġnotification Manager ?. create Notification Channel ( notification Channel ) ĊĠĠĠ Ġ} Ċ } Ċ Ċ // ĠTODO : ĠStep Ġ 1 . 1 4 ĠCancel Ġall Ġnotifications Ċ /** Ċ Ġ* ĠCancel s Ġall Ġnotifications . Ċ Ġ* Ċ Ġ*/ Ċ fun ĠNotification Manager . cancel Notifications () Ġ{ ĊĠĠĠ Ġcancel All () Ċ }