{"id":786,"date":"2021-03-12T19:47:55","date_gmt":"2021-03-12T10:47:55","guid":{"rendered":"http:\/\/batmask.dothome.co.kr\/?p=786"},"modified":"2025-09-12T18:18:44","modified_gmt":"2025-09-12T09:18:44","slug":"%eb%b9%8c%ec%96%b4%eb%a8%b9%ec%9d%84-android-alarm-%eb%a7%8c%eb%93%a4%ea%b8%b0","status":"publish","type":"post","link":"http:\/\/batmask.net\/index.php\/2021\/03\/12\/786\/","title":{"rendered":"\ube4c\uc5b4\uba39\uc744 Android Alarm \ub9cc\ub4e4\uae30"},"content":{"rendered":"\n<p>\uac04\ub2e8\ud788 \uc54c\ub78c\uc571\uc744 \ud558\ub098 \ub9cc\ub4e4\ub2e4\uac00 \uac04\ub2e8\ud788 \uc548\ub418\uc11c \uc880 \ub9ce\uc774 \ube61\uce58\uace0 \uc624\ub798\uac78\ub838\ub2e4. \uadf8 \uacbd\ud5d8\uc744 \uae30\ub85d\ud558\ub824 \ud55c\ub2e4. \ub9c8\uad6c\uc7a1\uc774\ub85c \ud558\ub2e4\uac00 \uc131\uacf5\ud558\uace0\ub098\uc11c \ubb50\uac00 \uc5b4\ub5bb\uac8c \ub3d9\uc791\ud558\ub294\uc9c0 \ud558\ub8e8\uc885\uc77c \ubc84\uc804\ubcc4\ub85c \uc774\uac83 \uc800\uac83 \ud14c\uc2a4\ud2b8 \ud574\ubd24\ub294\ub370, \uc5ec\uc804\ud788 \ud63c\ub780\uc2a4\ub7fd\uae30 \ub54c\ubb38\uc5d0 \uc801\ub2f9\ud788 \uc815\ub9ac\uac00 \ud544\uc694\ud558\ub2e4. \uc2dc\uc791\ud558\uae30\uc804\uc5d0 \uaf2d \uc54c\uc544\uc57c \ud558\ub294\uc810\uc740, <strong><span class=\"has-inline-color has-vivid-red-color\">Alarm \uc571\uc744 \ub9cc\ub4dc\ub294\ub370\uc5d0 AlarmManager\ub85c \ud574\uacb0\ub418\uc9c0 \uc54a\ub294\ub2e4\ub294 \uc0ac\uc2e4\uc774\ub2e4. AlarmManager\ub97c \uc0ac\uc6a9\uc740 \ud558\uaca0\uc9c0\ub9cc, \uc2e4\uc81c \ud45c\uc2dc\ud558\ub294 \ubd80\ubd84\uc740 Notification\uc744 \uc774\uc6a9\ud55c\ub2e4. \uc774\ub984\ub54c\ubb38\uc5d0 \ud568\uc815\uc5d0 \ube60\uc9c0\uc9c0\ub9d0\uc790.<\/span><\/strong><\/p>\n\n\n\n<p>\uc77c\ub2e8, \uae30\ubcf8 notification \ub3d9\uc791\uc5d0 \ub300\ud574 \uc54c\uc544\ubcf4\uc790. \uacf5\uc2dd \ubb38\uc11c\uc758 \ub0b4\uc6a9\uacfc \uc774\ubbf8\uc9c0\ub4e4\uc744 \uac00\uc838\uc654\ub2e4. <a href=\"https:\/\/developer.android.com\/guide\/topics\/ui\/notifiers\/notifications\">\uacf5\uc2dd \uc0ac\uc774\ud2b8\uc758 notification \ud56d\ubaa9\uc744 \ucc38\uc870<\/a>.<\/p>\n\n\n<div class=\"wp-block-image is-resized\">\n<figure class=\"aligncenter size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"700\" height=\"263\" src=\"http:\/\/batmask.dothome.co.kr\/wordpress\/wp-content\/uploads\/2021\/03\/notification-area_2x.png\" alt=\"\" class=\"wp-image-798\" srcset=\"http:\/\/batmask.net\/wordpress\/wp-content\/uploads\/2021\/03\/notification-area_2x.png 700w, http:\/\/batmask.net\/wordpress\/wp-content\/uploads\/2021\/03\/notification-area_2x-300x113.png 300w\" sizes=\"auto, (max-width: 700px) 100vw, 700px\" \/><\/figure>\n<\/div>\n\n\n<p>\uc775\ud788 \uc54c\uaca0\uc9c0\ub9cc, notification\uc740 \uc0c1\ub2e8 \uc0c1\ud0dc\ubc14\uc5d0 \uc544\uc774\ucf58\uc73c\ub85c \ud45c\uc2dc\ub41c\ub2e4. <\/p>\n\n\n<div class=\"wp-block-image is-resized\">\n<figure class=\"aligncenter size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"700\" height=\"718\" src=\"http:\/\/batmask.dothome.co.kr\/wordpress\/wp-content\/uploads\/2021\/03\/notification-drawer_2x.png\" alt=\"\" class=\"wp-image-799\" srcset=\"http:\/\/batmask.net\/wordpress\/wp-content\/uploads\/2021\/03\/notification-drawer_2x.png 700w, http:\/\/batmask.net\/wordpress\/wp-content\/uploads\/2021\/03\/notification-drawer_2x-292x300.png 292w\" sizes=\"auto, (max-width: 700px) 100vw, 700px\" \/><\/figure>\n<\/div>\n\n\n<p>\ud3f0\uc758 \uc0c1\ub2e8\uc744 \ub4dc\ub798\uadf8\ud574\uc11c \uc544\ub798\ub85c \ub0b4\ub9ac\uba74, notification\uc758 \ub0b4\uc6a9\uc744 \ubcfc \uc218 \uc788\ub2e4.<\/p>\n\n\n<div class=\"wp-block-image is-resized\">\n<figure class=\"aligncenter size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"700\" height=\"679\" src=\"http:\/\/batmask.dothome.co.kr\/wordpress\/wp-content\/uploads\/2021\/03\/heads-up_2x.png\" alt=\"\" class=\"wp-image-800\" srcset=\"http:\/\/batmask.net\/wordpress\/wp-content\/uploads\/2021\/03\/heads-up_2x.png 700w, http:\/\/batmask.net\/wordpress\/wp-content\/uploads\/2021\/03\/heads-up_2x-300x291.png 300w\" sizes=\"auto, (max-width: 700px) 100vw, 700px\" \/><\/figure>\n<\/div>\n\n\n<p>Head up Notification\uc758 \uacbd\uc6b0, \uc704\uc640\uac19\uc774 Notification\uc758 \ub0b4\uc6a9\uc774 \ud654\uba74 \uc0c1\ub2e8\uc5d0 \ud45c\uc2dc\uac00 \ub41c\ub2e4. \uc704 \uc774\ubbf8\uc9c0\uc758 REPLY, ARCHIVE\ub294 \ubc84\ud2bc\ucc98\ub7fc \ub3d9\uc791\ud558\ub294\ub370, Notification\uc5d0 Action\uc744 \ucd94\uac00\ud574\uc8fc\uba74 \uc0ac\uc6a9\ud560 \uc218 \uc788\ub2e4. \ud074\ub9ad\uc2dc, \uc9c0\uc815\ud55c \uc778\ud150\ud2b8\ub97c \ub0a0\ub9ac\uac8c \ub41c\ub2e4. Head up notification\uc774 \ubcf4\uc5ec\uc9c0\ub294 \uc870\uac74\uc740 \ub2e4\uc74c\uacfc \uac19\ub2e4.<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>fullscreen mode\ub97c \uc0ac\uc6a9(Notification \ub9cc\ub4e4 \ub54c, fullScreenIntent\ub97c \uc9c0\uc815\ud55c\ub2e4.)<\/li>\n\n\n\n<li>Notification\uc774 high priority\ub97c \uac16\uace0, Ringtone sound\uc640 vibration\uc744 \uc0ac\uc6a9\uc2dc(Android 7.1, API level 25 \uc774\ud558)<\/li>\n\n\n\n<li>Notification channel\uc774 high importance\ub97c \uac16\uc744 \ub54c. (Android 8.0, API level 26 \uc774\uc0c1)<\/li>\n<\/ul>\n\n\n\n<p>Notification\uc758 \uae30\ubcf8\uc801\uc778 \ud45c\uc2dc\uad6c\uc870\ub294 \ub2e4\uc74c\uacfc \uac19\ub2e4.<\/p>\n\n\n<div class=\"wp-block-image is-resized\">\n<figure class=\"aligncenter size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"862\" height=\"251\" src=\"http:\/\/batmask.dothome.co.kr\/wordpress\/wp-content\/uploads\/2021\/03\/notification-callouts_2x.png\" alt=\"\" class=\"wp-image-806\" srcset=\"http:\/\/batmask.net\/wordpress\/wp-content\/uploads\/2021\/03\/notification-callouts_2x.png 862w, http:\/\/batmask.net\/wordpress\/wp-content\/uploads\/2021\/03\/notification-callouts_2x-300x87.png 300w, http:\/\/batmask.net\/wordpress\/wp-content\/uploads\/2021\/03\/notification-callouts_2x-768x224.png 768w\" sizes=\"auto, (max-width: 862px) 100vw, 862px\" \/><\/figure>\n<\/div>\n\n\n<ol class=\"wp-block-list\">\n<li>small Icon : setSmallIcon()<\/li>\n\n\n\n<li>App name : provided by the system<\/li>\n\n\n\n<li>Time stamp : setWhen(), setShowWhen(false)<\/li>\n\n\n\n<li>Large Icon : setLargeIcon()<\/li>\n\n\n\n<li>Title : setContentTitle()<\/li>\n\n\n\n<li>Text : setContentText()<\/li>\n<\/ol>\n\n\n\n<p>\uc704\uc5d0\uc11c \ubcf8 \uc77c\ubc18\uc801\uc778 notification\uc740 \ubcc4 \ubb38\uc81c\uc5c6\uc774 \uc791\ub3d9\ud55c\ub2e4. \ub2e8, Android 7.1 \uc5d0\uc11c 8.0(Oreo)\uc73c\ub85c \ub118\uc5b4\uac00\uba74\uc11c Notification channel\uc774 \ucd94\uac00\ub410\uc73c\uba70, \uac01 notification\uc5d0 \uc124\uc815\ud558\ub358 priority\uac00 channel \ubcc4 importance\ub85c \ubcc0\uacbd\ub418\uc5c8\uc73c\ub2c8 \uc774\ub97c \ucc98\ub9ac\ud574\uc8fc\uba74 \ub41c\ub2e4.<\/p>\n\n\n\n<p>\ucc44\ub110 \uc0dd\uc131\uc740 Android 8.0 \uc774\uc0c1\uc778\uc9c0 \uccb4\ud06c\ud574\uc11c \ub2e4\uc74c\uacfc \uac19\uc774 \uc0dd\uc131\ud55c\ub2e4.<\/p>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro cbp-has-line-numbers\" data-code-block-pro-font-family=\"Code-Pro-Roboto-Mono.ttf\" style=\"font-size:clamp(14px, .875rem, 21px);font-family:Code-Pro-Roboto-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;--cbp-line-number-color:#adbac7;--cbp-line-number-width:calc(2 * 0.6 * .875rem);line-height:clamp(20px, 1.25rem, 30px);--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span style=\"display:block;padding:16px 0 0 16px;margin-bottom:-1px;width:100%;text-align:left;background-color:#22272e\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"54\" height=\"14\" viewBox=\"0 0 54 14\"><g fill=\"none\" fill-rule=\"evenodd\" transform=\"translate(1 1)\"><circle cx=\"6\" cy=\"6\" r=\"6\" fill=\"#FF5F56\" stroke=\"#E0443E\" stroke-width=\".5\"><\/circle><circle cx=\"26\" cy=\"6\" r=\"6\" fill=\"#FFBD2E\" stroke=\"#DEA123\" stroke-width=\".5\"><\/circle><circle cx=\"46\" cy=\"6\" r=\"6\" fill=\"#27C93F\" stroke=\"#1AAB29\" stroke-width=\".5\"><\/circle><\/g><\/svg><\/span><span role=\"button\" tabindex=\"0\" style=\"color:#adbac7;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><pre class=\"code-block-pro-copy-button-pre\" aria-hidden=\"true\"><textarea class=\"code-block-pro-copy-button-textarea\" tabindex=\"-1\" aria-hidden=\"true\" readonly>if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {\n     val name = context.getString(R.string.basic_channel_name)\n     val descriptionText = context.getString(R.string.basic_channel_desc)\n     val importance = NotificationManager.IMPORTANCE_DEFAULT\n     val channel = NotificationChannel(\n         context.getString(R.string.basic_noti_channel_id),\n         name,\n         importance\n     ).apply {\n         description = descriptionText\n     }\n     val notificationManager =\n         context.getSystemService(Context.NOTIFICATION_SERVICE) as NotificationManager\n     notificationManager.createNotificationChannel(channel)\n }<\/textarea><\/pre><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2\"><\/path><\/svg><\/span><pre class=\"shiki github-dark-dimmed\" style=\"background-color: #22272e\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #F47067\">if<\/span><span style=\"color: #ADBAC7\"> (Build.VERSION.SDK_INT <\/span><span style=\"color: #F47067\">&gt;=<\/span><span style=\"color: #ADBAC7\"> Build.VERSION_CODES.O) {<\/span><\/span>\n<span class=\"line\"><span style=\"color: #ADBAC7\">     <\/span><span style=\"color: #F47067\">val<\/span><span style=\"color: #ADBAC7\"> name <\/span><span style=\"color: #F47067\">=<\/span><span style=\"color: #ADBAC7\"> context.<\/span><span style=\"color: #DCBDFB\">getString<\/span><span style=\"color: #ADBAC7\">(R.string.basic_channel_name)<\/span><\/span>\n<span class=\"line\"><span style=\"color: #ADBAC7\">     <\/span><span style=\"color: #F47067\">val<\/span><span style=\"color: #ADBAC7\"> descriptionText <\/span><span style=\"color: #F47067\">=<\/span><span style=\"color: #ADBAC7\"> context.<\/span><span style=\"color: #DCBDFB\">getString<\/span><span style=\"color: #ADBAC7\">(R.string.basic_channel_desc)<\/span><\/span>\n<span class=\"line\"><span style=\"color: #ADBAC7\">     <\/span><span style=\"color: #F47067\">val<\/span><span style=\"color: #ADBAC7\"> importance <\/span><span style=\"color: #F47067\">=<\/span><span style=\"color: #ADBAC7\"> NotificationManager.IMPORTANCE_DEFAULT<\/span><\/span>\n<span class=\"line\"><span style=\"color: #ADBAC7\">     <\/span><span style=\"color: #F47067\">val<\/span><span style=\"color: #ADBAC7\"> channel <\/span><span style=\"color: #F47067\">=<\/span><span style=\"color: #ADBAC7\"> <\/span><span style=\"color: #DCBDFB\">NotificationChannel<\/span><span style=\"color: #ADBAC7\">(<\/span><\/span>\n<span class=\"line\"><span style=\"color: #ADBAC7\">         context.<\/span><span style=\"color: #DCBDFB\">getString<\/span><span style=\"color: #ADBAC7\">(R.string.basic_noti_channel_id),<\/span><\/span>\n<span class=\"line\"><span style=\"color: #ADBAC7\">         name,<\/span><\/span>\n<span class=\"line\"><span style=\"color: #ADBAC7\">         importance<\/span><\/span>\n<span class=\"line\"><span style=\"color: #ADBAC7\">     ).<\/span><span style=\"color: #DCBDFB\">apply<\/span><span style=\"color: #ADBAC7\"> {<\/span><\/span>\n<span class=\"line\"><span style=\"color: #ADBAC7\">         description <\/span><span style=\"color: #F47067\">=<\/span><span style=\"color: #ADBAC7\"> descriptionText<\/span><\/span>\n<span class=\"line\"><span style=\"color: #ADBAC7\">     }<\/span><\/span>\n<span class=\"line\"><span style=\"color: #ADBAC7\">     <\/span><span style=\"color: #F47067\">val<\/span><span style=\"color: #ADBAC7\"> notificationManager <\/span><span style=\"color: #F47067\">=<\/span><\/span>\n<span class=\"line\"><span style=\"color: #ADBAC7\">         context.<\/span><span style=\"color: #DCBDFB\">getSystemService<\/span><span style=\"color: #ADBAC7\">(Context.NOTIFICATION_SERVICE) <\/span><span style=\"color: #F47067\">as<\/span><span style=\"color: #ADBAC7\"> NotificationManager<\/span><\/span>\n<span class=\"line\"><span style=\"color: #ADBAC7\">     notificationManager.<\/span><span style=\"color: #DCBDFB\">createNotificationChannel<\/span><span style=\"color: #ADBAC7\">(channel)<\/span><\/span>\n<span class=\"line\"><span style=\"color: #ADBAC7\"> }<\/span><\/span><\/code><\/pre><\/div>\n\n\n\n<p>\uac04\ub2e8\ud55c notification\uc740 \ub2e4\uc74c\uacfc \uac19\uc774 \uc0dd\uc131\ud55c\ub2e4. \ud638\ud658\uc131\uc744 \uc704\ud574 NotificationCompat\uc744 \uc0ac\uc6a9\ud558\ub294\uac78 \ubcfc \uc218 \uc788\ub2e4.<\/p>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro cbp-has-line-numbers\" data-code-block-pro-font-family=\"Code-Pro-Roboto-Mono.ttf\" style=\"font-size:clamp(14px, .875rem, 21px);font-family:Code-Pro-Roboto-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;--cbp-line-number-color:#adbac7;--cbp-line-number-width:calc(2 * 0.6 * .875rem);line-height:clamp(20px, 1.25rem, 30px);--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span style=\"display:block;padding:16px 0 0 16px;margin-bottom:-1px;width:100%;text-align:left;background-color:#22272e\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"54\" height=\"14\" viewBox=\"0 0 54 14\"><g fill=\"none\" fill-rule=\"evenodd\" transform=\"translate(1 1)\"><circle cx=\"6\" cy=\"6\" r=\"6\" fill=\"#FF5F56\" stroke=\"#E0443E\" stroke-width=\".5\"><\/circle><circle cx=\"26\" cy=\"6\" r=\"6\" fill=\"#FFBD2E\" stroke=\"#DEA123\" stroke-width=\".5\"><\/circle><circle cx=\"46\" cy=\"6\" r=\"6\" fill=\"#27C93F\" stroke=\"#1AAB29\" stroke-width=\".5\"><\/circle><\/g><\/svg><\/span><span role=\"button\" tabindex=\"0\" style=\"color:#adbac7;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><pre class=\"code-block-pro-copy-button-pre\" aria-hidden=\"true\"><textarea class=\"code-block-pro-copy-button-textarea\" tabindex=\"-1\" aria-hidden=\"true\" readonly>val intent = Intent(context, NotiSampleActivity::class.java).apply {\n     flags = Intent.FLAG_ACTIVITY_NEW_TASK or Intent.FLAG_ACTIVITY_CLEAR_TASK\n }\n val pendingIntent = PendingIntent.getActivity(context, 0,intent, 0)\n val builder = NotificationCompat.Builder(context, context.getString(R.string.basic_noti_channel_id)).apply {\n     setSmallIcon(R.drawable.ic_launcher_foreground)\n     setContentTitle(\"basic notification\")\n     setContentText(\"It's basic notification!\")\n     priority = NotificationCompat.PRIORITY_DEFAULT\n     setContentIntent(pendingIntent)\n     setAutoCancel(true)  \/\/ \ud130\uce58\uc2dc \uc778\ud150\ud2b8\ub97c \ubcf4\ub0b4\uace0 \uc790\ub3d9\uc73c\ub85c notification \uc81c\uac70\n }\n val notificationId = 1\n with(NotificationManagerCompat.from(context)){\n     notify(notificationId, builder.build())\n }<\/textarea><\/pre><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2\"><\/path><\/svg><\/span><pre class=\"shiki github-dark-dimmed\" style=\"background-color: #22272e\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #F47067\">val<\/span><span style=\"color: #ADBAC7\"> intent <\/span><span style=\"color: #F47067\">=<\/span><span style=\"color: #ADBAC7\"> <\/span><span style=\"color: #DCBDFB\">Intent<\/span><span style=\"color: #ADBAC7\">(context, NotiSampleActivity::<\/span><span style=\"color: #DCBDFB\">class<\/span><span style=\"color: #ADBAC7\">.java).<\/span><span style=\"color: #DCBDFB\">apply<\/span><span style=\"color: #ADBAC7\"> {<\/span><\/span>\n<span class=\"line\"><span style=\"color: #ADBAC7\">     flags <\/span><span style=\"color: #F47067\">=<\/span><span style=\"color: #ADBAC7\"> Intent.FLAG_ACTIVITY_NEW_TASK or Intent.FLAG_ACTIVITY_CLEAR_TASK<\/span><\/span>\n<span class=\"line\"><span style=\"color: #ADBAC7\"> }<\/span><\/span>\n<span class=\"line\"><span style=\"color: #ADBAC7\"> <\/span><span style=\"color: #F47067\">val<\/span><span style=\"color: #ADBAC7\"> pendingIntent <\/span><span style=\"color: #F47067\">=<\/span><span style=\"color: #ADBAC7\"> PendingIntent.<\/span><span style=\"color: #DCBDFB\">getActivity<\/span><span style=\"color: #ADBAC7\">(context, <\/span><span style=\"color: #6CB6FF\">0<\/span><span style=\"color: #ADBAC7\">,intent, <\/span><span style=\"color: #6CB6FF\">0<\/span><span style=\"color: #ADBAC7\">)<\/span><\/span>\n<span class=\"line\"><span style=\"color: #ADBAC7\"> <\/span><span style=\"color: #F47067\">val<\/span><span style=\"color: #ADBAC7\"> builder <\/span><span style=\"color: #F47067\">=<\/span><span style=\"color: #ADBAC7\"> NotificationCompat.<\/span><span style=\"color: #DCBDFB\">Builder<\/span><span style=\"color: #ADBAC7\">(context, context.<\/span><span style=\"color: #DCBDFB\">getString<\/span><span style=\"color: #ADBAC7\">(R.string.basic_noti_channel_id)).<\/span><span style=\"color: #DCBDFB\">apply<\/span><span style=\"color: #ADBAC7\"> {<\/span><\/span>\n<span class=\"line\"><span style=\"color: #ADBAC7\">     <\/span><span style=\"color: #DCBDFB\">setSmallIcon<\/span><span style=\"color: #ADBAC7\">(R.drawable.ic_launcher_foreground)<\/span><\/span>\n<span class=\"line\"><span style=\"color: #ADBAC7\">     <\/span><span style=\"color: #DCBDFB\">setContentTitle<\/span><span style=\"color: #ADBAC7\">(<\/span><span style=\"color: #96D0FF\">&quot;basic notification&quot;<\/span><span style=\"color: #ADBAC7\">)<\/span><\/span>\n<span class=\"line\"><span style=\"color: #ADBAC7\">     <\/span><span style=\"color: #DCBDFB\">setContentText<\/span><span style=\"color: #ADBAC7\">(<\/span><span style=\"color: #96D0FF\">&quot;It&#39;s basic notification!&quot;<\/span><span style=\"color: #ADBAC7\">)<\/span><\/span>\n<span class=\"line\"><span style=\"color: #ADBAC7\">     priority <\/span><span style=\"color: #F47067\">=<\/span><span style=\"color: #ADBAC7\"> NotificationCompat.PRIORITY_DEFAULT<\/span><\/span>\n<span class=\"line\"><span style=\"color: #ADBAC7\">     <\/span><span style=\"color: #DCBDFB\">setContentIntent<\/span><span style=\"color: #ADBAC7\">(pendingIntent)<\/span><\/span>\n<span class=\"line\"><span style=\"color: #ADBAC7\">     <\/span><span style=\"color: #DCBDFB\">setAutoCancel<\/span><span style=\"color: #ADBAC7\">(<\/span><span style=\"color: #6CB6FF\">true<\/span><span style=\"color: #ADBAC7\">)  <\/span><span style=\"color: #768390\">\/\/ \ud130\uce58\uc2dc \uc778\ud150\ud2b8\ub97c \ubcf4\ub0b4\uace0 \uc790\ub3d9\uc73c\ub85c notification \uc81c\uac70<\/span><\/span>\n<span class=\"line\"><span style=\"color: #ADBAC7\"> }<\/span><\/span>\n<span class=\"line\"><span style=\"color: #ADBAC7\"> <\/span><span style=\"color: #F47067\">val<\/span><span style=\"color: #ADBAC7\"> notificationId <\/span><span style=\"color: #F47067\">=<\/span><span style=\"color: #ADBAC7\"> <\/span><span style=\"color: #6CB6FF\">1<\/span><\/span>\n<span class=\"line\"><span style=\"color: #ADBAC7\"> <\/span><span style=\"color: #DCBDFB\">with<\/span><span style=\"color: #ADBAC7\">(NotificationManagerCompat.<\/span><span style=\"color: #DCBDFB\">from<\/span><span style=\"color: #ADBAC7\">(context)){<\/span><\/span>\n<span class=\"line\"><span style=\"color: #ADBAC7\">     <\/span><span style=\"color: #DCBDFB\">notify<\/span><span style=\"color: #ADBAC7\">(notificationId, builder.<\/span><span style=\"color: #DCBDFB\">build<\/span><span style=\"color: #ADBAC7\">())<\/span><\/span>\n<span class=\"line\"><span style=\"color: #ADBAC7\"> }<\/span><\/span><\/code><\/pre><\/div>\n\n\n\n<p>Notification\uc744 update \ud558\ub294 \uacbd\uc6b0\uc5d0\ub294 \ubcc0\uacbd\ub41c Notification\uc744 \uc0dd\uc131\ud558\uace0 \uac19\uc740 notification id\ub97c \uc774\uc6a9\ud574\uc11c notify\ud558\uba74 \ub41c\ub2e4. \uc81c\uac70\ub294 NotificationManager.cancel(notification id)\ub97c \uc774\uc6a9\ud55c\ub2e4.<\/p>\n\n\n\n<p>\uae30\ubcf8\ud615\ud0dc \uc774\uc678\uc5d0\ub3c4 \ud14d\uc2a4\ud2b8\uac00 \ub9ce\uc740\uacbd\uc6b0 expandable notification\uc744 \uc0ac\uc6a9\ud560 \uc218 \uc788\ub2e4.<\/p>\n\n\n<div class=\"wp-block-image is-resized\">\n<figure class=\"aligncenter size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"772\" height=\"762\" src=\"http:\/\/batmask.dothome.co.kr\/wordpress\/wp-content\/uploads\/2021\/03\/notification-expanded_2x.png\" alt=\"\" class=\"wp-image-808\" srcset=\"http:\/\/batmask.net\/wordpress\/wp-content\/uploads\/2021\/03\/notification-expanded_2x.png 772w, http:\/\/batmask.net\/wordpress\/wp-content\/uploads\/2021\/03\/notification-expanded_2x-300x296.png 300w, http:\/\/batmask.net\/wordpress\/wp-content\/uploads\/2021\/03\/notification-expanded_2x-768x758.png 768w\" sizes=\"auto, (max-width: 772px) 100vw, 772px\" \/><\/figure>\n<\/div>\n\n\n<p>Android 7.0\ubd80\ud130\ub294 \ub3d9\uc77c \uc571\uc758 \uc5ec\ub7ec notification\uc744 group\uc73c\ub85c \ubb36\uc5b4 \ub2e4\uc74c\uacfc \uac19\uc774 \uc0ac\uc6a9\ub3c4 \uac00\ub2a5\ud558\ub2e4. <\/p>\n\n\n<div class=\"wp-block-image is-resized\">\n<figure class=\"aligncenter size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"772\" height=\"869\" src=\"http:\/\/batmask.dothome.co.kr\/wordpress\/wp-content\/uploads\/2021\/03\/notification-group_2x.png\" alt=\"\" class=\"wp-image-809\" srcset=\"http:\/\/batmask.net\/wordpress\/wp-content\/uploads\/2021\/03\/notification-group_2x.png 772w, http:\/\/batmask.net\/wordpress\/wp-content\/uploads\/2021\/03\/notification-group_2x-267x300.png 267w, http:\/\/batmask.net\/wordpress\/wp-content\/uploads\/2021\/03\/notification-group_2x-768x864.png 768w\" sizes=\"auto, (max-width: 772px) 100vw, 772px\" \/><\/figure>\n<\/div>\n\n\n<p>\uc774 \uc678\uc5d0\ub3c4 media player\ud0c0\uc785\ub4f1 \ubbf8\ub9ac \uc815\uc758\ub41c \ub2e4\ub978 \ud615\ud0dc\ub4e4\ub3c4 \uc0ac\uc6a9\uac00\ub2a5\ud558\uace0, \uc0ac\uc6a9\uc790 \ucee4\uc2a4\ud130\ub9c8\uc774\uc988\ub3c4 \uac00\ub2a5\ud558\ub2e4. \uc5ec\uae30\uc11c \ub2e4\ub8e8\ub294 \ud575\uc2ec \uc8fc\uc81c\ub294 \uc544\ub2c8\ubbc0\ub85c \ud544\uc694\ud558\ub2e4\uba74, \ucc98\uc74c\uc5d0 \uc5b8\uae09\ud588\ub358 \uacf5\uc2dd \ubb38\uc11c\ub97c \ucc38\uace0\ud558\uc790.<\/p>\n\n\n\n<p>Android 8.0 \ubd80\ud130 \uc571 \uc544\uc774\ucf58\uc5d0\ub3c4 Notification\uc774 \ud45c\uc2dc\ub41c\ub2e4. \uc774\ub97c App icon badge\ub77c\uace0 \ubd80\ub978\ub2e4. Notification\uc774 \uc788\ub294 \uacbd\uc6b0, \uc0c9\uc774 \uc788\ub294 &#8220;badge&#8221;( notification dot)\uc774\ub77c\uace0\ub3c4 \ubd80\ub978\ub2e4.)\uac00 \ud45c\uc2dc\ub41c\ub2e4. \uc544\uc774\ucf58\uc744 long press\ud574\uc11c notification\uc744 \ubcf4\uac70\ub098 \ud574\uc81c\uc2dc\ud0ac \uc218 \uc788\ub2e4.<\/p>\n\n\n<div class=\"wp-block-image is-resized\">\n<figure class=\"aligncenter size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"700\" height=\"728\" src=\"http:\/\/batmask.dothome.co.kr\/wordpress\/wp-content\/uploads\/2021\/03\/badges-open_2x.png\" alt=\"\" class=\"wp-image-803\" srcset=\"http:\/\/batmask.net\/wordpress\/wp-content\/uploads\/2021\/03\/badges-open_2x.png 700w, http:\/\/batmask.net\/wordpress\/wp-content\/uploads\/2021\/03\/badges-open_2x-288x300.png 288w\" sizes=\"auto, (max-width: 700px) 100vw, 700px\" \/><\/figure>\n<\/div>\n\n\n<p><\/p>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"771\" height=\"57\" src=\"http:\/\/batmask.dothome.co.kr\/wordpress\/wp-content\/uploads\/2020\/04\/seperator.png\" alt=\"seperator\" class=\"wp-image-381\" srcset=\"http:\/\/batmask.net\/wordpress\/wp-content\/uploads\/2020\/04\/seperator.png 771w, http:\/\/batmask.net\/wordpress\/wp-content\/uploads\/2020\/04\/seperator-300x22.png 300w, http:\/\/batmask.net\/wordpress\/wp-content\/uploads\/2020\/04\/seperator-768x57.png 768w\" sizes=\"auto, (max-width: 771px) 100vw, 771px\" \/><\/figure>\n<\/div>\n\n\n<h3 class=\"wp-block-heading\">\uc54c\ub78c\uc744 \uc704\ud55c Fullscreen Intent<\/h3>\n\n\n\n<p>\uc774\uc81c\ubd80\ud130\uac00 \ubcf8\ub860\uc774\ub2e4. \uc804\ud654\uac00 \uc624\uac70\ub098 \uc54c\ub78c\uc744 \uc6b8\ub9ac\ub294 \uacbd\uc6b0\ucc98\ub7fc time-sensitive\ud558\uac8c \uc911\uc694\ud55c notification\uc740 fullscreen Intent\ub97c \uc0ac\uc6a9\ud55c\ub2e4. \uc774\ub807\uac8c \ud558\uba74, background\uc0c1\ud0dc\uc5d0\uc11c\ub3c4 Activity\ub97c \ub744\uc6b8 \uc218 \uc788\ub2e4. \ub9cc\uc57d, \uc0ac\uc6a9\uc790\uac00 \ub514\ubc14\uc774\uc2a4\ub97c \uc0ac\uc6a9\uc911\uc774\ub77c\uba74 head-up notification\uc744 \uc0ac\uc6a9\ud574\uc11c \ubcf4\uc5ec\uc904 \uac83\uc774\ub2e4.<\/p>\n\n\n\n<p>fullscreen intent\ub97c \uc0ac\uc6a9\ud558\ub824\uba74, Android 10( API level 29)\ubd80\ud130\ub294 USE_FULL_SCREEN_INTENT permission\uc774 \ud544\uc694\ud558\ub2e4. <\/p>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro cbp-has-line-numbers\" data-code-block-pro-font-family=\"Code-Pro-Roboto-Mono.ttf\" style=\"font-size:clamp(14px, .875rem, 21px);font-family:Code-Pro-Roboto-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;--cbp-line-number-color:#adbac7;--cbp-line-number-width:calc(1 * 0.6 * .875rem);line-height:clamp(20px, 1.25rem, 30px);--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span style=\"display:block;padding:16px 0 0 16px;margin-bottom:-1px;width:100%;text-align:left;background-color:#22272e\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"54\" height=\"14\" viewBox=\"0 0 54 14\"><g fill=\"none\" fill-rule=\"evenodd\" transform=\"translate(1 1)\"><circle cx=\"6\" cy=\"6\" r=\"6\" fill=\"#FF5F56\" stroke=\"#E0443E\" stroke-width=\".5\"><\/circle><circle cx=\"26\" cy=\"6\" r=\"6\" fill=\"#FFBD2E\" stroke=\"#DEA123\" stroke-width=\".5\"><\/circle><circle cx=\"46\" cy=\"6\" r=\"6\" fill=\"#27C93F\" stroke=\"#1AAB29\" stroke-width=\".5\"><\/circle><\/g><\/svg><\/span><span role=\"button\" tabindex=\"0\" style=\"color:#adbac7;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><pre class=\"code-block-pro-copy-button-pre\" aria-hidden=\"true\"><textarea class=\"code-block-pro-copy-button-textarea\" tabindex=\"-1\" aria-hidden=\"true\" readonly>&lt;uses-permission android:name=\"android.permission.USE_FULL_SCREEN_INTENT\" \/><\/textarea><\/pre><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2\"><\/path><\/svg><\/span><pre class=\"shiki github-dark-dimmed\" style=\"background-color: #22272e\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #ADBAC7\">&lt;<\/span><span style=\"color: #8DDB8C\">uses-permission<\/span><span style=\"color: #ADBAC7\"> <\/span><span style=\"color: #6CB6FF\">android:name<\/span><span style=\"color: #ADBAC7\">=<\/span><span style=\"color: #96D0FF\">&quot;android.permission.USE_FULL_SCREEN_INTENT&quot;<\/span><span style=\"color: #ADBAC7\"> \/&gt;<\/span><\/span><\/code><\/pre><\/div>\n\n\n\n<p>fullscreen intent\uac00 \uc81c\ub300\ub85c \ub3d9\uc791\ud558\uae30 \uc704\ud574\uc11c notification channel\uc744 \uc0ac\uc6a9\ud558\ub294 Android 8.0\ubd80\ud130\ub294 \ucc44\ub110\uc758 importance\ub97c high\ub85c \uc124\uc815\ud574\uc57c\ud55c\ub2e4. \ud558\ub098\uc758 \uc571\uc5d0\uc11c \ucc44\ub110\uc740 \uc5ec\ub7ec\uac1c \uc0ac\uc6a9\uc774 \uac00\ub2a5\ud558\ub2c8, \ub2e4\ub978 notification\ub3c4 \uc0ac\uc6a9\ud558\ub294 \uacbd\uc6b0, fullscreen intent\uc6a9 \ucc44\ub110\uc744 \ubd84\ub9ac\ud574\uc11c \uc0ac\uc6a9\ud558\uba74 \ub41c\ub2e4.<\/p>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro cbp-has-line-numbers\" data-code-block-pro-font-family=\"Code-Pro-Roboto-Mono.ttf\" style=\"font-size:clamp(14px, .875rem, 21px);font-family:Code-Pro-Roboto-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;--cbp-line-number-color:#adbac7;--cbp-line-number-width:calc(2 * 0.6 * .875rem);line-height:clamp(20px, 1.25rem, 30px);--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span style=\"display:block;padding:16px 0 0 16px;margin-bottom:-1px;width:100%;text-align:left;background-color:#22272e\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"54\" height=\"14\" viewBox=\"0 0 54 14\"><g fill=\"none\" fill-rule=\"evenodd\" transform=\"translate(1 1)\"><circle cx=\"6\" cy=\"6\" r=\"6\" fill=\"#FF5F56\" stroke=\"#E0443E\" stroke-width=\".5\"><\/circle><circle cx=\"26\" cy=\"6\" r=\"6\" fill=\"#FFBD2E\" stroke=\"#DEA123\" stroke-width=\".5\"><\/circle><circle cx=\"46\" cy=\"6\" r=\"6\" fill=\"#27C93F\" stroke=\"#1AAB29\" stroke-width=\".5\"><\/circle><\/g><\/svg><\/span><span role=\"button\" tabindex=\"0\" style=\"color:#adbac7;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><pre class=\"code-block-pro-copy-button-pre\" aria-hidden=\"true\"><textarea class=\"code-block-pro-copy-button-textarea\" tabindex=\"-1\" aria-hidden=\"true\" readonly>fun createNotiChannelHigh(context: Context) {\n     \/\/ basic notification channel\n     if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {\n         val name = context.getString(R.string.high_importance_channel_name)\n         val descriptionText = context.getString(R.string.high_importance_channel_desc)\n         \/\/ \uc911\uc694 \ubd80\ubd84. importance high\ub85c \uc124\uc815\ud574\uc57c \ud55c\ub2e4!\n         val importance = NotificationManager.IMPORTANCE_HIGH\n         val channel = NotificationChannel(\n             context.getString(R.string.high_noti_channel_id),\n             name,\n             importance\n         ).apply {\n             description = descriptionText\n         }\n         val notificationManager =\n             context.getSystemService(Context.NOTIFICATION_SERVICE) as NotificationManager\n         notificationManager.createNotificationChannel(channel)\n     }\n }<\/textarea><\/pre><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2\"><\/path><\/svg><\/span><pre class=\"shiki github-dark-dimmed\" style=\"background-color: #22272e\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #F47067\">fun<\/span><span style=\"color: #ADBAC7\"> <\/span><span style=\"color: #DCBDFB\">createNotiChannelHigh<\/span><span style=\"color: #ADBAC7\">(context: <\/span><span style=\"color: #F69D50\">Context<\/span><span style=\"color: #ADBAC7\">) {<\/span><\/span>\n<span class=\"line\"><span style=\"color: #ADBAC7\">     <\/span><span style=\"color: #768390\">\/\/ basic notification channel<\/span><\/span>\n<span class=\"line\"><span style=\"color: #ADBAC7\">     <\/span><span style=\"color: #F47067\">if<\/span><span style=\"color: #ADBAC7\"> (Build.VERSION.SDK_INT <\/span><span style=\"color: #F47067\">&gt;=<\/span><span style=\"color: #ADBAC7\"> Build.VERSION_CODES.O) {<\/span><\/span>\n<span class=\"line\"><span style=\"color: #ADBAC7\">         <\/span><span style=\"color: #F47067\">val<\/span><span style=\"color: #ADBAC7\"> name <\/span><span style=\"color: #F47067\">=<\/span><span style=\"color: #ADBAC7\"> context.<\/span><span style=\"color: #DCBDFB\">getString<\/span><span style=\"color: #ADBAC7\">(R.string.high_importance_channel_name)<\/span><\/span>\n<span class=\"line\"><span style=\"color: #ADBAC7\">         <\/span><span style=\"color: #F47067\">val<\/span><span style=\"color: #ADBAC7\"> descriptionText <\/span><span style=\"color: #F47067\">=<\/span><span style=\"color: #ADBAC7\"> context.<\/span><span style=\"color: #DCBDFB\">getString<\/span><span style=\"color: #ADBAC7\">(R.string.high_importance_channel_desc)<\/span><\/span>\n<span class=\"line\"><span style=\"color: #ADBAC7\">         <\/span><span style=\"color: #768390\">\/\/ \uc911\uc694 \ubd80\ubd84. importance high\ub85c \uc124\uc815\ud574\uc57c \ud55c\ub2e4!<\/span><\/span>\n<span class=\"line\"><span style=\"color: #ADBAC7\">         <\/span><span style=\"color: #F47067\">val<\/span><span style=\"color: #ADBAC7\"> importance <\/span><span style=\"color: #F47067\">=<\/span><span style=\"color: #ADBAC7\"> NotificationManager.IMPORTANCE_HIGH<\/span><\/span>\n<span class=\"line\"><span style=\"color: #ADBAC7\">         <\/span><span style=\"color: #F47067\">val<\/span><span style=\"color: #ADBAC7\"> channel <\/span><span style=\"color: #F47067\">=<\/span><span style=\"color: #ADBAC7\"> <\/span><span style=\"color: #DCBDFB\">NotificationChannel<\/span><span style=\"color: #ADBAC7\">(<\/span><\/span>\n<span class=\"line\"><span style=\"color: #ADBAC7\">             context.<\/span><span style=\"color: #DCBDFB\">getString<\/span><span style=\"color: #ADBAC7\">(R.string.high_noti_channel_id),<\/span><\/span>\n<span class=\"line\"><span style=\"color: #ADBAC7\">             name,<\/span><\/span>\n<span class=\"line\"><span style=\"color: #ADBAC7\">             importance<\/span><\/span>\n<span class=\"line\"><span style=\"color: #ADBAC7\">         ).<\/span><span style=\"color: #DCBDFB\">apply<\/span><span style=\"color: #ADBAC7\"> {<\/span><\/span>\n<span class=\"line\"><span style=\"color: #ADBAC7\">             description <\/span><span style=\"color: #F47067\">=<\/span><span style=\"color: #ADBAC7\"> descriptionText<\/span><\/span>\n<span class=\"line\"><span style=\"color: #ADBAC7\">         }<\/span><\/span>\n<span class=\"line\"><span style=\"color: #ADBAC7\">         <\/span><span style=\"color: #F47067\">val<\/span><span style=\"color: #ADBAC7\"> notificationManager <\/span><span style=\"color: #F47067\">=<\/span><\/span>\n<span class=\"line\"><span style=\"color: #ADBAC7\">             context.<\/span><span style=\"color: #DCBDFB\">getSystemService<\/span><span style=\"color: #ADBAC7\">(Context.NOTIFICATION_SERVICE) <\/span><span style=\"color: #F47067\">as<\/span><span style=\"color: #ADBAC7\"> NotificationManager<\/span><\/span>\n<span class=\"line\"><span style=\"color: #ADBAC7\">         notificationManager.<\/span><span style=\"color: #DCBDFB\">createNotificationChannel<\/span><span style=\"color: #ADBAC7\">(channel)<\/span><\/span>\n<span class=\"line\"><span style=\"color: #ADBAC7\">     }<\/span><\/span>\n<span class=\"line\"><span style=\"color: #ADBAC7\"> }<\/span><\/span><\/code><\/pre><\/div>\n\n\n\n<p>notification\uc744 \uc0dd\uc131\ud558\ub294 \ubd80\ubd84\uc740 \ub2e4\uc74c\uacfc \uac19\ub2e4. setFullscreenIntent()\ub97c \uc774\uc6a9\ud574, fullscreen\uc73c\ub85c \ubcf4\uc5ec\uc904 Activity\uc758 PendingIntent\ub97c \ucd94\uac00\ud574\uc900\ub2e4. \uc774\ub294 Content Intent\uc640 \ubcc4\uac1c\ub85c \ub3d9\uc791\ud558\ubbc0\ub85c, \uac19\uc544\ub3c4 \ub418\uace0 \ub2ec\ub77c\ub3c4 \ub41c\ub2e4.<\/p>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro cbp-has-line-numbers\" data-code-block-pro-font-family=\"Code-Pro-Roboto-Mono.ttf\" style=\"font-size:clamp(14px, .875rem, 21px);font-family:Code-Pro-Roboto-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;--cbp-line-number-color:#adbac7;--cbp-line-number-width:calc(2 * 0.6 * .875rem);line-height:clamp(20px, 1.25rem, 30px);--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span style=\"display:block;padding:16px 0 0 16px;margin-bottom:-1px;width:100%;text-align:left;background-color:#22272e\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"54\" height=\"14\" viewBox=\"0 0 54 14\"><g fill=\"none\" fill-rule=\"evenodd\" transform=\"translate(1 1)\"><circle cx=\"6\" cy=\"6\" r=\"6\" fill=\"#FF5F56\" stroke=\"#E0443E\" stroke-width=\".5\"><\/circle><circle cx=\"26\" cy=\"6\" r=\"6\" fill=\"#FFBD2E\" stroke=\"#DEA123\" stroke-width=\".5\"><\/circle><circle cx=\"46\" cy=\"6\" r=\"6\" fill=\"#27C93F\" stroke=\"#1AAB29\" stroke-width=\".5\"><\/circle><\/g><\/svg><\/span><span role=\"button\" tabindex=\"0\" style=\"color:#adbac7;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><pre class=\"code-block-pro-copy-button-pre\" aria-hidden=\"true\"><textarea class=\"code-block-pro-copy-button-textarea\" tabindex=\"-1\" aria-hidden=\"true\" readonly>val intent = Intent(context, NotiSampleActivity::class.java).apply {\n     flags = Intent.FLAG_ACTIVITY_NEW_TASK or Intent.FLAG_ACTIVITY_CLEAR_TASK\n }\n val pendingIntent = PendingIntent.getActivity(context, 0,intent, 0)\n\/\/ fullscreen \uc6a9 Activity Intent \uc0dd\uc131\n val fullscreenIntent = Intent(context, FullscreenIntentActivity::class.java).apply {\n     action = \"fullscreen_activity\"\n     flags = Intent.FLAG_ACTIVITY_NEW_TASK or Intent.FLAG_ACTIVITY_CLEAR_TASK\n }\n val fullscreenPendingIntent = PendingIntent.getActivity(context, 0, fullscreenIntent, PendingIntent.FLAG_UPDATE_CURRENT)\n\n val builder = NotificationCompat.Builder(context, context.getString(R.string.high_noti_channel_id)).apply {\n     setSmallIcon(R.drawable.ic_launcher_foreground)\n     setContentTitle(\"fullscreen intent notification\")\n     setContentText(\"fullscreen intent notification!\")\n     setAutoCancel(true)\n     setDefaults(Notification.DEFAULT_LIGHTS or Notification.DEFAULT_VIBRATE)\n     setCategory(NotificationCompat.CATEGORY_ALARM)\n     setVisibility(NotificationCompat.VISIBILITY_PUBLIC)\n     setLocalOnly(true)\n     priority = NotificationCompat.PRIORITY_MAX\n     setContentIntent(fullscreenPendingIntent)\n     \/\/ &lt;-- set full screen intent\n     setFullScreenIntent(fullscreenPendingIntent, true)\n }<\/textarea><\/pre><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2\"><\/path><\/svg><\/span><pre class=\"shiki github-dark-dimmed\" style=\"background-color: #22272e\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #F47067\">val<\/span><span style=\"color: #ADBAC7\"> intent <\/span><span style=\"color: #F47067\">=<\/span><span style=\"color: #ADBAC7\"> <\/span><span style=\"color: #DCBDFB\">Intent<\/span><span style=\"color: #ADBAC7\">(context, NotiSampleActivity::<\/span><span style=\"color: #DCBDFB\">class<\/span><span style=\"color: #ADBAC7\">.java).<\/span><span style=\"color: #DCBDFB\">apply<\/span><span style=\"color: #ADBAC7\"> {<\/span><\/span>\n<span class=\"line\"><span style=\"color: #ADBAC7\">     flags <\/span><span style=\"color: #F47067\">=<\/span><span style=\"color: #ADBAC7\"> Intent.FLAG_ACTIVITY_NEW_TASK or Intent.FLAG_ACTIVITY_CLEAR_TASK<\/span><\/span>\n<span class=\"line\"><span style=\"color: #ADBAC7\"> }<\/span><\/span>\n<span class=\"line\"><span style=\"color: #ADBAC7\"> <\/span><span style=\"color: #F47067\">val<\/span><span style=\"color: #ADBAC7\"> pendingIntent <\/span><span style=\"color: #F47067\">=<\/span><span style=\"color: #ADBAC7\"> PendingIntent.<\/span><span style=\"color: #DCBDFB\">getActivity<\/span><span style=\"color: #ADBAC7\">(context, <\/span><span style=\"color: #6CB6FF\">0<\/span><span style=\"color: #ADBAC7\">,intent, <\/span><span style=\"color: #6CB6FF\">0<\/span><span style=\"color: #ADBAC7\">)<\/span><\/span>\n<span class=\"line\"><span style=\"color: #768390\">\/\/ fullscreen \uc6a9 Activity Intent \uc0dd\uc131<\/span><\/span>\n<span class=\"line\"><span style=\"color: #ADBAC7\"> <\/span><span style=\"color: #F47067\">val<\/span><span style=\"color: #ADBAC7\"> fullscreenIntent <\/span><span style=\"color: #F47067\">=<\/span><span style=\"color: #ADBAC7\"> <\/span><span style=\"color: #DCBDFB\">Intent<\/span><span style=\"color: #ADBAC7\">(context, FullscreenIntentActivity::<\/span><span style=\"color: #DCBDFB\">class<\/span><span style=\"color: #ADBAC7\">.java).<\/span><span style=\"color: #DCBDFB\">apply<\/span><span style=\"color: #ADBAC7\"> {<\/span><\/span>\n<span class=\"line\"><span style=\"color: #ADBAC7\">     action <\/span><span style=\"color: #F47067\">=<\/span><span style=\"color: #ADBAC7\"> <\/span><span style=\"color: #96D0FF\">&quot;fullscreen_activity&quot;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #ADBAC7\">     flags <\/span><span style=\"color: #F47067\">=<\/span><span style=\"color: #ADBAC7\"> Intent.FLAG_ACTIVITY_NEW_TASK or Intent.FLAG_ACTIVITY_CLEAR_TASK<\/span><\/span>\n<span class=\"line\"><span style=\"color: #ADBAC7\"> }<\/span><\/span>\n<span class=\"line\"><span style=\"color: #ADBAC7\"> <\/span><span style=\"color: #F47067\">val<\/span><span style=\"color: #ADBAC7\"> fullscreenPendingIntent <\/span><span style=\"color: #F47067\">=<\/span><span style=\"color: #ADBAC7\"> PendingIntent.<\/span><span style=\"color: #DCBDFB\">getActivity<\/span><span style=\"color: #ADBAC7\">(context, <\/span><span style=\"color: #6CB6FF\">0<\/span><span style=\"color: #ADBAC7\">, fullscreenIntent, PendingIntent.FLAG_UPDATE_CURRENT)<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #ADBAC7\"> <\/span><span style=\"color: #F47067\">val<\/span><span style=\"color: #ADBAC7\"> builder <\/span><span style=\"color: #F47067\">=<\/span><span style=\"color: #ADBAC7\"> NotificationCompat.<\/span><span style=\"color: #DCBDFB\">Builder<\/span><span style=\"color: #ADBAC7\">(context, context.<\/span><span style=\"color: #DCBDFB\">getString<\/span><span style=\"color: #ADBAC7\">(R.string.high_noti_channel_id)).<\/span><span style=\"color: #DCBDFB\">apply<\/span><span style=\"color: #ADBAC7\"> {<\/span><\/span>\n<span class=\"line\"><span style=\"color: #ADBAC7\">     <\/span><span style=\"color: #DCBDFB\">setSmallIcon<\/span><span style=\"color: #ADBAC7\">(R.drawable.ic_launcher_foreground)<\/span><\/span>\n<span class=\"line\"><span style=\"color: #ADBAC7\">     <\/span><span style=\"color: #DCBDFB\">setContentTitle<\/span><span style=\"color: #ADBAC7\">(<\/span><span style=\"color: #96D0FF\">&quot;fullscreen intent notification&quot;<\/span><span style=\"color: #ADBAC7\">)<\/span><\/span>\n<span class=\"line\"><span style=\"color: #ADBAC7\">     <\/span><span style=\"color: #DCBDFB\">setContentText<\/span><span style=\"color: #ADBAC7\">(<\/span><span style=\"color: #96D0FF\">&quot;fullscreen intent notification!&quot;<\/span><span style=\"color: #ADBAC7\">)<\/span><\/span>\n<span class=\"line\"><span style=\"color: #ADBAC7\">     <\/span><span style=\"color: #DCBDFB\">setAutoCancel<\/span><span style=\"color: #ADBAC7\">(<\/span><span style=\"color: #6CB6FF\">true<\/span><span style=\"color: #ADBAC7\">)<\/span><\/span>\n<span class=\"line\"><span style=\"color: #ADBAC7\">     <\/span><span style=\"color: #DCBDFB\">setDefaults<\/span><span style=\"color: #ADBAC7\">(Notification.DEFAULT_LIGHTS or Notification.DEFAULT_VIBRATE)<\/span><\/span>\n<span class=\"line\"><span style=\"color: #ADBAC7\">     <\/span><span style=\"color: #DCBDFB\">setCategory<\/span><span style=\"color: #ADBAC7\">(NotificationCompat.CATEGORY_ALARM)<\/span><\/span>\n<span class=\"line\"><span style=\"color: #ADBAC7\">     <\/span><span style=\"color: #DCBDFB\">setVisibility<\/span><span style=\"color: #ADBAC7\">(NotificationCompat.VISIBILITY_PUBLIC)<\/span><\/span>\n<span class=\"line\"><span style=\"color: #ADBAC7\">     <\/span><span style=\"color: #DCBDFB\">setLocalOnly<\/span><span style=\"color: #ADBAC7\">(<\/span><span style=\"color: #6CB6FF\">true<\/span><span style=\"color: #ADBAC7\">)<\/span><\/span>\n<span class=\"line\"><span style=\"color: #ADBAC7\">     priority <\/span><span style=\"color: #F47067\">=<\/span><span style=\"color: #ADBAC7\"> NotificationCompat.PRIORITY_MAX<\/span><\/span>\n<span class=\"line\"><span style=\"color: #ADBAC7\">     <\/span><span style=\"color: #DCBDFB\">setContentIntent<\/span><span style=\"color: #ADBAC7\">(fullscreenPendingIntent)<\/span><\/span>\n<span class=\"line\"><span style=\"color: #ADBAC7\">     <\/span><span style=\"color: #768390\">\/\/ &lt;-- set full screen intent<\/span><\/span>\n<span class=\"line\"><span style=\"color: #ADBAC7\">     <\/span><span style=\"color: #DCBDFB\">setFullScreenIntent<\/span><span style=\"color: #ADBAC7\">(fullscreenPendingIntent, <\/span><span style=\"color: #6CB6FF\">true<\/span><span style=\"color: #ADBAC7\">)<\/span><\/span>\n<span class=\"line\"><span style=\"color: #ADBAC7\"> }<\/span><\/span><\/code><\/pre><\/div>\n\n\n\n<p>\uc55e\uc11c \uc598\uae30\ud588\ub4ef, full screen intent\uc9c0\ub9cc \ub514\ubc14\uc774\uc2a4 \uc0ac\uc6a9\uc911\uc5d0\ub294 headup notification\uc73c\ub85c \ud45c\uc2dc\ub41c\ub2e4. full screen\uc73c\ub85c Activity\uac00 \ub728\ub294 \uacbd\uc6b0\ub294 \ud654\uba74\uc774 \uaebc\uc838 \ub514\ubc14\uc774\uc2a4\uac00 \uc2ac\ub9bd\uc0c1\ud0dc\uc5d0 \uc788\uc744 \ub54c\uc774\ub2e4. \ud558\uc9c0\ub9cc, \uc774 \uacbd\uc6b0\uc5d0\ub3c4 \ud654\uba74\uc774 \uc790\ub3d9\uc73c\ub85c \ucf1c\uc9c0\uc9c4 \uc54a\ub294\ub2e4. \uc2ac\ub9bd\uc0c1\ud0dc\uc5d0\uc11c \uc790\ub3d9\uc73c\ub85c \ud654\uba74\uc774 \ucf1c\uc9c0\uace0 \uc54c\ub78c\uc774 \ubcf4\uc774\ub824\uba74 \ucc98\ub9ac\ud574\uc57c\ud560 \ubd80\ubd84\ub4e4\uc774 \ub0a8\uc558\ub2e4. <\/p>\n\n\n\n<p>\uc774\uc81c \ubb38\uc81c\uac00 \ub418\ub294 \ubd80\ubd84\uc774 lock screen\uc774 \uac78\ub9b0 \uc0c1\ud669\uacfc \ud654\uba74\uc774 \uaebc\uc838\uc788\uc744 \ub54c \ud654\uba74\uc744 \ucf1c\uc57c\ud558\ub294 \uacbd\uc6b0\uc774\ub2e4. \uc77c\ubc18\uc801\uc73c\ub85c lock screen\uc774 \uac78\ub824\uc788\uc744 \ub54c, notification\uc740 \uc774\ubbf8\uc9c0\uc640 \uac19\uc774 \ud45c\uc2dc\ub41c\ub2e4.<\/p>\n\n\n<div class=\"wp-block-image is-resized\">\n<figure class=\"aligncenter size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"700\" height=\"881\" src=\"http:\/\/batmask.dothome.co.kr\/wordpress\/wp-content\/uploads\/2021\/03\/lock-screen_2x.png\" alt=\"\" class=\"wp-image-805\" srcset=\"http:\/\/batmask.net\/wordpress\/wp-content\/uploads\/2021\/03\/lock-screen_2x.png 700w, http:\/\/batmask.net\/wordpress\/wp-content\/uploads\/2021\/03\/lock-screen_2x-238x300.png 238w\" sizes=\"auto, (max-width: 700px) 100vw, 700px\" \/><\/figure>\n<\/div>\n\n\n<p>lock\uc774 \uac78\ub9b0 \uc0c1\ud0dc\uc5d0\uc11c notification\uc744 \ubcf4\uc5ec\uc904\uc9c0(VISIBILITY_SECRET, VISIBILITY_PRIVATE), \ub0b4\uc6a9\uae4c\uc9c0 \uc804\ubd80 \ubcf4\uc5ec\uc904\uc9c0(VISIBILITY_PUBLIC) \uc5ec\ubd80\ub294 lock screen visibility\ub97c \uc124\uc815\ud574\uc11c \ubcc0\uacbd \uac00\ub2a5\ud558\ub2e4. \uc774\ub294 \uc720\uc800\uac00 \uc124\uc815\uc5d0\uc11c \ubc14\uafc0 \uc218\ub3c4 \uc788\ub2e4.<\/p>\n\n\n\n<p>\uc2a4\ud06c\ub9b0\uc744 \ud0a4\uace0 lock \uc704\ub85c Activity\ub97c \ub744\uc6b0\ub294 \ubd80\ubd84\uc740 Android 7, 8, 8.1\uc744 \uac70\uce58\uba70 \ub9ce\uc740 \ubcc0\ud654\uac00 \uc788\uc5c8\ub2e4. \ud638\ud658\uc131\uc744 \uc704\ud574 \ubc84\uc804\uc744 \uccb4\ud06c\ud558\uba70 \ucf54\ub4dc\ub97c \uc791\uc131\ud558\uba74 \ub2e4\uc74c\uacfc \uac19\uc774 \ub41c\ub2e4.<\/p>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro cbp-has-line-numbers\" data-code-block-pro-font-family=\"Code-Pro-Roboto-Mono.ttf\" style=\"font-size:clamp(14px, .875rem, 21px);font-family:Code-Pro-Roboto-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;--cbp-line-number-color:#adbac7;--cbp-line-number-width:calc(2 * 0.6 * .875rem);line-height:clamp(20px, 1.25rem, 30px);--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span style=\"display:block;padding:16px 0 0 16px;margin-bottom:-1px;width:100%;text-align:left;background-color:#22272e\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"54\" height=\"14\" viewBox=\"0 0 54 14\"><g fill=\"none\" fill-rule=\"evenodd\" transform=\"translate(1 1)\"><circle cx=\"6\" cy=\"6\" r=\"6\" fill=\"#FF5F56\" stroke=\"#E0443E\" stroke-width=\".5\"><\/circle><circle cx=\"26\" cy=\"6\" r=\"6\" fill=\"#FFBD2E\" stroke=\"#DEA123\" stroke-width=\".5\"><\/circle><circle cx=\"46\" cy=\"6\" r=\"6\" fill=\"#27C93F\" stroke=\"#1AAB29\" stroke-width=\".5\"><\/circle><\/g><\/svg><\/span><span role=\"button\" tabindex=\"0\" style=\"color:#adbac7;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><pre class=\"code-block-pro-copy-button-pre\" aria-hidden=\"true\"><textarea class=\"code-block-pro-copy-button-textarea\" tabindex=\"-1\" aria-hidden=\"true\" readonly>private fun turnScreenOnAndKeyguardOff(){\n     if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O_MR1) {\n         setShowWhenLocked(true)\n         setTurnScreenOn(true)\n         window.addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON\n                 or WindowManager.LayoutParams.FLAG_ALLOW_LOCK_WHILE_SCREEN_ON)\n     } else {\n         window.addFlags(WindowManager.LayoutParams.FLAG_SHOW_WHEN_LOCKED    \/\/ deprecated api 27\n                 or WindowManager.LayoutParams.FLAG_DISMISS_KEYGUARD     \/\/ deprecated api 26\n                 or WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON\n                 or WindowManager.LayoutParams.FLAG_TURN_SCREEN_ON   \/\/ deprecated api 27\n                 or WindowManager.LayoutParams.FLAG_ALLOW_LOCK_WHILE_SCREEN_ON)\n     }\n     val keyguardMgr = getSystemService(Context.KEYGUARD_SERVICE) as KeyguardManager\n     if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {\n         keyguardMgr.requestDismissKeyguard(this, null) \n     }\n }<\/textarea><\/pre><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2\"><\/path><\/svg><\/span><pre class=\"shiki github-dark-dimmed\" style=\"background-color: #22272e\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #F47067\">private<\/span><span style=\"color: #ADBAC7\"> <\/span><span style=\"color: #F47067\">fun<\/span><span style=\"color: #ADBAC7\"> <\/span><span style=\"color: #DCBDFB\">turnScreenOnAndKeyguardOff<\/span><span style=\"color: #ADBAC7\">(){<\/span><\/span>\n<span class=\"line\"><span style=\"color: #ADBAC7\">     <\/span><span style=\"color: #F47067\">if<\/span><span style=\"color: #ADBAC7\"> (Build.VERSION.SDK_INT <\/span><span style=\"color: #F47067\">&gt;=<\/span><span style=\"color: #ADBAC7\"> Build.VERSION_CODES.O_MR1) {<\/span><\/span>\n<span class=\"line\"><span style=\"color: #ADBAC7\">         <\/span><span style=\"color: #DCBDFB\">setShowWhenLocked<\/span><span style=\"color: #ADBAC7\">(<\/span><span style=\"color: #6CB6FF\">true<\/span><span style=\"color: #ADBAC7\">)<\/span><\/span>\n<span class=\"line\"><span style=\"color: #ADBAC7\">         <\/span><span style=\"color: #DCBDFB\">setTurnScreenOn<\/span><span style=\"color: #ADBAC7\">(<\/span><span style=\"color: #6CB6FF\">true<\/span><span style=\"color: #ADBAC7\">)<\/span><\/span>\n<span class=\"line\"><span style=\"color: #ADBAC7\">         window.<\/span><span style=\"color: #DCBDFB\">addFlags<\/span><span style=\"color: #ADBAC7\">(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON<\/span><\/span>\n<span class=\"line\"><span style=\"color: #ADBAC7\">                 or WindowManager.LayoutParams.FLAG_ALLOW_LOCK_WHILE_SCREEN_ON)<\/span><\/span>\n<span class=\"line\"><span style=\"color: #ADBAC7\">     } <\/span><span style=\"color: #F47067\">else<\/span><span style=\"color: #ADBAC7\"> {<\/span><\/span>\n<span class=\"line\"><span style=\"color: #ADBAC7\">         window.<\/span><span style=\"color: #DCBDFB\">addFlags<\/span><span style=\"color: #ADBAC7\">(WindowManager.LayoutParams.FLAG_SHOW_WHEN_LOCKED    <\/span><span style=\"color: #768390\">\/\/ deprecated api 27<\/span><\/span>\n<span class=\"line\"><span style=\"color: #ADBAC7\">                 or WindowManager.LayoutParams.FLAG_DISMISS_KEYGUARD     <\/span><span style=\"color: #768390\">\/\/ deprecated api 26<\/span><\/span>\n<span class=\"line\"><span style=\"color: #ADBAC7\">                 or WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON<\/span><\/span>\n<span class=\"line\"><span style=\"color: #ADBAC7\">                 or WindowManager.LayoutParams.FLAG_TURN_SCREEN_ON   <\/span><span style=\"color: #768390\">\/\/ deprecated api 27<\/span><\/span>\n<span class=\"line\"><span style=\"color: #ADBAC7\">                 or WindowManager.LayoutParams.FLAG_ALLOW_LOCK_WHILE_SCREEN_ON)<\/span><\/span>\n<span class=\"line\"><span style=\"color: #ADBAC7\">     }<\/span><\/span>\n<span class=\"line\"><span style=\"color: #ADBAC7\">     <\/span><span style=\"color: #F47067\">val<\/span><span style=\"color: #ADBAC7\"> keyguardMgr <\/span><span style=\"color: #F47067\">=<\/span><span style=\"color: #ADBAC7\"> <\/span><span style=\"color: #DCBDFB\">getSystemService<\/span><span style=\"color: #ADBAC7\">(Context.KEYGUARD_SERVICE) <\/span><span style=\"color: #F47067\">as<\/span><span style=\"color: #ADBAC7\"> KeyguardManager<\/span><\/span>\n<span class=\"line\"><span style=\"color: #ADBAC7\">     <\/span><span style=\"color: #F47067\">if<\/span><span style=\"color: #ADBAC7\"> (Build.VERSION.SDK_INT <\/span><span style=\"color: #F47067\">&gt;=<\/span><span style=\"color: #ADBAC7\"> Build.VERSION_CODES.O) {<\/span><\/span>\n<span class=\"line\"><span style=\"color: #ADBAC7\">         keyguardMgr.<\/span><span style=\"color: #DCBDFB\">requestDismissKeyguard<\/span><span style=\"color: #ADBAC7\">(<\/span><span style=\"color: #6CB6FF\">this<\/span><span style=\"color: #ADBAC7\">, <\/span><span style=\"color: #6CB6FF\">null<\/span><span style=\"color: #ADBAC7\">) <\/span><\/span>\n<span class=\"line\"><span style=\"color: #ADBAC7\">     }<\/span><\/span>\n<span class=\"line\"><span style=\"color: #ADBAC7\"> }<\/span><\/span><\/code><\/pre><\/div>\n\n\n\n<p>\uba3c\uc800, Android 8.1 \uc5ec\ubd80\ub97c \uccb4\ud06c\ud558\ub294\ub370, WindowManager\ub85c \uc138\ud305\ud558\ub294 \ud50c\ub798\uadf8\uc911 FLAG_SHOW_WHEN_LOCKED\uc640 FLAG_TURN_SCREEN_ON\uc774 Activity\uc758 setShowWhenLocked(), setTurnScreenOn()\uba54\uc18c\ub4dc\ub97c \ud638\ucd9c\ud558\ub294 \uac83\uc73c\ub85c \ubcc0\uacbd\ub418\uc5c8\ub2e4. \uc815\ud655\ud55c\uac74 \ubaa8\ub974\uaca0\uc9c0\ub9cc, \uc758\ub3c4\ud558\uc9c0 \uc54a\uc740 \ub450\ubc88\uc758 \ub77c\uc774\ud504 \uc0ac\uc774\ud074 \uc774\ubca4\ud2b8\ub97c \ubc29\uc9c0\ud558\uae30 \uc704\ud55c \uac70\ub77c\uace0 \ud55c\ub2e4.<\/p>\n\n\n\n<p>\uacf5\ud1b5\uc73c\ub85c \uc801\uc6a9\ud558\ub294 \ubd80\ubd84\uc73c\ub85c\ub294 FLAG_KEEP_SCREEN_ON, FLAG_ALLOW_LOCK_WHILE_SCREEN_ON\uc774 \uc788\ub2e4. <\/p>\n\n\n\n<p>\ub9c8\uc9c0\ub9c9\uc73c\ub85c Android 8.0\uc744 \uccb4\ud06c\ud558\ub294 \ubd80\ubd84\uc774 \uc788\ub294\ub370, \ubc14\ub85c keyguard \ubd80\ubd84\uc774\ub2e4. \uc774\uc804\uc5d0\ub294 \uc5ed\uc2dc FLAG\ub97c \uc0ac\uc6a9\ud558\uc5ec FLAG_DISMISS_KEYGUARD\ub97c \uc124\uc815\ud588\uc73c\ub098, keyguard service\ub85c requestDismissKeyguard()\ub97c \ud638\ucd9c\ud558\ub3c4\ub85d \ubcc0\uacbd\ub418\uc5c8\ub2e4. \ubcc0\uacbd \uc774\uc720\ub294 \ud574\ub2f9 \ud50c\ub798\uadf8\ub97c \uac00\uc9c4 Activity\uac00 \ud3ec\ucee4\uc2a4 \ub418\uc5c8\uc744 \ub54c, Keyguard\uac00 \ud574\uc81c\ub418\ubbc0\ub85c \uc758\ub3c4\ud558\uc9c0 \uc54a\uc740 \ud130\uce58\ub97c \ub9c9\uc9c0 \ubabb\ud574\uc11c\ub77c\uace0 \ud55c\ub2e4. <br>\uc0ac\uc2e4, \uc774\ubd80\ubd84 \ub54c\ubb38\uc5d0 \uc0bd\uc9c8\uc744 \uc5c4\uccad\ud588\ub294\ub370, <strong><span class=\"has-inline-color has-vivid-red-color\" style=\"\"><b>dismiss keyguard\ubd80\ubd84\uc774 \uc788\uc5b4\uc57c notification\uc774 \uc654\uc744 \ub54c setScreenTurnOn()\uc774 \uc815\uc0c1\uc791\ub3d9\ud558\uc5ec \uc790\ub3d9\uc73c\ub85c \ud654\uba74\uc774 \ucf1c\uc9c4\ub2e4. \uc608\uc804\uc774\ub77c\uba74, FLAG_TURN_SCREEN_ON \uacfc FLAG_DISMISS_KEYGUARD\uac00 \ubc18\ub4dc\uc2dc \uac19\uc774 \uc0ac\uc6a9\ub418\uc5b4\uc57c \ud55c\ub2e4\ub294 \ub9d0\uc774\ub2e4.<\/b><\/span>  <\/strong><\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>\uc9c0\uae08\uae4c\uc9c0 notification\uc73c\ub85c \ud654\uba74\uc5d0 \ud45c\uc2dc\ud558\ub294 \ubd80\ubd84\uc744 \ud574\uacb0\ud588\ub2e4\uba74, Alarm\uc744 \ub9cc\ub4e4\uae30\uc704\ud574 \uc815\ud655\ud55c \uc2dc\uc810\uc5d0 notification\uc744 \uc0dd\uc131\ud574\uc57c \ud55c\ub2e4. \uc774\ub294 AlarmManager\uc758 setExactAndAllowWhileIdle()\uc744 \uc0ac\uc6a9\ud558\uba74 \uac00\ub2a5\ud558\ub2e4. <\/code><\/pre>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro cbp-has-line-numbers\" data-code-block-pro-font-family=\"Code-Pro-Roboto-Mono.ttf\" style=\"font-size:clamp(14px, .875rem, 21px);font-family:Code-Pro-Roboto-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;--cbp-line-number-color:#adbac7;--cbp-line-number-width:calc(2 * 0.6 * .875rem);line-height:clamp(20px, 1.25rem, 30px);--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span style=\"display:block;padding:16px 0 0 16px;margin-bottom:-1px;width:100%;text-align:left;background-color:#22272e\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"54\" height=\"14\" viewBox=\"0 0 54 14\"><g fill=\"none\" fill-rule=\"evenodd\" transform=\"translate(1 1)\"><circle cx=\"6\" cy=\"6\" r=\"6\" fill=\"#FF5F56\" stroke=\"#E0443E\" stroke-width=\".5\"><\/circle><circle cx=\"26\" cy=\"6\" r=\"6\" fill=\"#FFBD2E\" stroke=\"#DEA123\" stroke-width=\".5\"><\/circle><circle cx=\"46\" cy=\"6\" r=\"6\" fill=\"#27C93F\" stroke=\"#1AAB29\" stroke-width=\".5\"><\/circle><\/g><\/svg><\/span><span role=\"button\" tabindex=\"0\" style=\"color:#adbac7;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><pre class=\"code-block-pro-copy-button-pre\" aria-hidden=\"true\"><textarea class=\"code-block-pro-copy-button-textarea\" tabindex=\"-1\" aria-hidden=\"true\" readonly>fun fullscreenNotiWithAlarm(context: Context){\n     val alarmManager = context.getSystemService(Context.ALARM_SERVICE) as AlarmManager\n     val intent = Intent(context, NotiBroadcastReceiver::class.java).apply {\n         action = DONIT_TIMER_ALARM\n     }\n     val alarmIntent = PendingIntent.getBroadcast(context, 0, intent, PendingIntent.FLAG_UPDATE_CURRENT)\n     alarmManager.setExactAndAllowWhileIdle(\n         AlarmManager.ELAPSED_REALTIME_WAKEUP,\n         SystemClock.elapsedRealtime() + DONIT_ALARM_LENGTH,\n         alarmIntent)\n }<\/textarea><\/pre><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2\"><\/path><\/svg><\/span><pre class=\"shiki github-dark-dimmed\" style=\"background-color: #22272e\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #F47067\">fun<\/span><span style=\"color: #ADBAC7\"> <\/span><span style=\"color: #DCBDFB\">fullscreenNotiWithAlarm<\/span><span style=\"color: #ADBAC7\">(context: <\/span><span style=\"color: #F69D50\">Context<\/span><span style=\"color: #ADBAC7\">){<\/span><\/span>\n<span class=\"line\"><span style=\"color: #ADBAC7\">     <\/span><span style=\"color: #F47067\">val<\/span><span style=\"color: #ADBAC7\"> alarmManager <\/span><span style=\"color: #F47067\">=<\/span><span style=\"color: #ADBAC7\"> context.<\/span><span style=\"color: #DCBDFB\">getSystemService<\/span><span style=\"color: #ADBAC7\">(Context.ALARM_SERVICE) <\/span><span style=\"color: #F47067\">as<\/span><span style=\"color: #ADBAC7\"> AlarmManager<\/span><\/span>\n<span class=\"line\"><span style=\"color: #ADBAC7\">     <\/span><span style=\"color: #F47067\">val<\/span><span style=\"color: #ADBAC7\"> intent <\/span><span style=\"color: #F47067\">=<\/span><span style=\"color: #ADBAC7\"> <\/span><span style=\"color: #DCBDFB\">Intent<\/span><span style=\"color: #ADBAC7\">(context, NotiBroadcastReceiver::<\/span><span style=\"color: #DCBDFB\">class<\/span><span style=\"color: #ADBAC7\">.java).<\/span><span style=\"color: #DCBDFB\">apply<\/span><span style=\"color: #ADBAC7\"> {<\/span><\/span>\n<span class=\"line\"><span style=\"color: #ADBAC7\">         action <\/span><span style=\"color: #F47067\">=<\/span><span style=\"color: #ADBAC7\"> DONIT_TIMER_ALARM<\/span><\/span>\n<span class=\"line\"><span style=\"color: #ADBAC7\">     }<\/span><\/span>\n<span class=\"line\"><span style=\"color: #ADBAC7\">     <\/span><span style=\"color: #F47067\">val<\/span><span style=\"color: #ADBAC7\"> alarmIntent <\/span><span style=\"color: #F47067\">=<\/span><span style=\"color: #ADBAC7\"> PendingIntent.<\/span><span style=\"color: #DCBDFB\">getBroadcast<\/span><span style=\"color: #ADBAC7\">(context, <\/span><span style=\"color: #6CB6FF\">0<\/span><span style=\"color: #ADBAC7\">, intent, PendingIntent.FLAG_UPDATE_CURRENT)<\/span><\/span>\n<span class=\"line\"><span style=\"color: #ADBAC7\">     alarmManager.<\/span><span style=\"color: #DCBDFB\">setExactAndAllowWhileIdle<\/span><span style=\"color: #ADBAC7\">(<\/span><\/span>\n<span class=\"line\"><span style=\"color: #ADBAC7\">         AlarmManager.ELAPSED_REALTIME_WAKEUP,<\/span><\/span>\n<span class=\"line\"><span style=\"color: #ADBAC7\">         SystemClock.<\/span><span style=\"color: #DCBDFB\">elapsedRealtime<\/span><span style=\"color: #ADBAC7\">() <\/span><span style=\"color: #F47067\">+<\/span><span style=\"color: #ADBAC7\"> DONIT_ALARM_LENGTH,<\/span><\/span>\n<span class=\"line\"><span style=\"color: #ADBAC7\">         alarmIntent)<\/span><\/span>\n<span class=\"line\"><span style=\"color: #ADBAC7\"> }<\/span><\/span><\/code><\/pre><\/div>\n\n\n\n<p>PendingIntent\uc758 getActivity()\ub85c \uc9c1\uc811 Activity\ub97c \ub744\uc6b8 \uc218\ub3c4 \uc788\uaca0\uc9c0\ub9cc, \ud14c\uc2a4\ud2b8\uc2dc \ubb38\uc81c\uac00 \uc880 \uc788\uc5c8\ub2e4. \uadf8\ub798\uc11c getBroadcast()\ub97c \uc774\uc6a9\ud558\uace0, BroadcastReceiver\uc5d0\uc11c Fullscreen Intent\ub97c \uc0dd\uc131\ud588\ub2e4. \ub2e8, \uc774\ubd80\ubd84\uc740 \ub9e4\uc6b0 \ud63c\ub780\uc2a4\ub7ec\uc6b4 \uc0c1\ud669\uc5d0\uc11c \ud655\uc778\ub41c\uac70\ub77c \ud655\uc2e4\ud55c \uac80\uc99d\uc774 \ud544\uc694\ud560 \uac70 \uac19\ub2e4. \ud639\uc2dc \uc81c\ub300\ub85c \ub3d9\uc791\ud558\uc9c0 \uc54a\ub294\ub2e4\uba74 \ucc38\uace0\ud558\uae38. \uc5ec\uae30\uc11c \uc0ac\uc6a9\ud55c BroadcastReceiver\ub294 \ub2e4\uc74c\uacfc \uac19\ub2e4.<\/p>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro cbp-has-line-numbers\" data-code-block-pro-font-family=\"Code-Pro-Roboto-Mono.ttf\" style=\"font-size:clamp(14px, .875rem, 21px);font-family:Code-Pro-Roboto-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;--cbp-line-number-color:#adbac7;--cbp-line-number-width:calc(2 * 0.6 * .875rem);line-height:clamp(20px, 1.25rem, 30px);--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span style=\"display:block;padding:16px 0 0 16px;margin-bottom:-1px;width:100%;text-align:left;background-color:#22272e\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"54\" height=\"14\" viewBox=\"0 0 54 14\"><g fill=\"none\" fill-rule=\"evenodd\" transform=\"translate(1 1)\"><circle cx=\"6\" cy=\"6\" r=\"6\" fill=\"#FF5F56\" stroke=\"#E0443E\" stroke-width=\".5\"><\/circle><circle cx=\"26\" cy=\"6\" r=\"6\" fill=\"#FFBD2E\" stroke=\"#DEA123\" stroke-width=\".5\"><\/circle><circle cx=\"46\" cy=\"6\" r=\"6\" fill=\"#27C93F\" stroke=\"#1AAB29\" stroke-width=\".5\"><\/circle><\/g><\/svg><\/span><span role=\"button\" tabindex=\"0\" style=\"color:#adbac7;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><pre class=\"code-block-pro-copy-button-pre\" aria-hidden=\"true\"><textarea class=\"code-block-pro-copy-button-textarea\" tabindex=\"-1\" aria-hidden=\"true\" readonly>class NotiBroadcastReceiver: BroadcastReceiver() {\n     override fun onReceive(context: Context?, intent: Intent?) {\n         if (intent != null) {\n             Log.d(\"NotiBroadcastReceiver\", \"action : ${intent.action}, extra : ${intent.getIntExtra(EXTRA_NOTIFICATION_ID, 0)}\")\n             when(intent.action){\n                 DONIT_TIMER_ALARM -> {\n                     if (context != null) {\n                         fullscreenNotification(context)\n                     }\n                 }\n             }\n         }\n     }\n }<\/textarea><\/pre><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2\"><\/path><\/svg><\/span><pre class=\"shiki github-dark-dimmed\" style=\"background-color: #22272e\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #F47067\">class<\/span><span style=\"color: #ADBAC7\"> <\/span><span style=\"color: #F69D50\">NotiBroadcastReceiver<\/span><span style=\"color: #ADBAC7\">: <\/span><span style=\"color: #F69D50\">BroadcastReceiver<\/span><span style=\"color: #ADBAC7\">() {<\/span><\/span>\n<span class=\"line\"><span style=\"color: #ADBAC7\">     <\/span><span style=\"color: #F47067\">override<\/span><span style=\"color: #ADBAC7\"> <\/span><span style=\"color: #F47067\">fun<\/span><span style=\"color: #ADBAC7\"> <\/span><span style=\"color: #DCBDFB\">onReceive<\/span><span style=\"color: #ADBAC7\">(context: <\/span><span style=\"color: #F69D50\">Context<\/span><span style=\"color: #ADBAC7\">?, intent: <\/span><span style=\"color: #F69D50\">Intent<\/span><span style=\"color: #ADBAC7\">?) {<\/span><\/span>\n<span class=\"line\"><span style=\"color: #ADBAC7\">         <\/span><span style=\"color: #F47067\">if<\/span><span style=\"color: #ADBAC7\"> (intent <\/span><span style=\"color: #F47067\">!=<\/span><span style=\"color: #ADBAC7\"> <\/span><span style=\"color: #6CB6FF\">null<\/span><span style=\"color: #ADBAC7\">) {<\/span><\/span>\n<span class=\"line\"><span style=\"color: #ADBAC7\">             Log.<\/span><span style=\"color: #DCBDFB\">d<\/span><span style=\"color: #ADBAC7\">(<\/span><span style=\"color: #96D0FF\">&quot;NotiBroadcastReceiver&quot;<\/span><span style=\"color: #ADBAC7\">, <\/span><span style=\"color: #96D0FF\">&quot;action : ${intent.action}, extra : ${intent.<\/span><span style=\"color: #DCBDFB\">getIntExtra<\/span><span style=\"color: #96D0FF\">(EXTRA_NOTIFICATION_ID, <\/span><span style=\"color: #6CB6FF\">0<\/span><span style=\"color: #96D0FF\">)}&quot;<\/span><span style=\"color: #ADBAC7\">)<\/span><\/span>\n<span class=\"line\"><span style=\"color: #ADBAC7\">             <\/span><span style=\"color: #F47067\">when<\/span><span style=\"color: #ADBAC7\">(intent.action){<\/span><\/span>\n<span class=\"line\"><span style=\"color: #ADBAC7\">                 DONIT_TIMER_ALARM <\/span><span style=\"color: #F47067\">-&gt;<\/span><span style=\"color: #ADBAC7\"> {<\/span><\/span>\n<span class=\"line\"><span style=\"color: #ADBAC7\">                     <\/span><span style=\"color: #F47067\">if<\/span><span style=\"color: #ADBAC7\"> (context <\/span><span style=\"color: #F47067\">!=<\/span><span style=\"color: #ADBAC7\"> <\/span><span style=\"color: #6CB6FF\">null<\/span><span style=\"color: #ADBAC7\">) {<\/span><\/span>\n<span class=\"line\"><span style=\"color: #ADBAC7\">                         <\/span><span style=\"color: #DCBDFB\">fullscreenNotification<\/span><span style=\"color: #ADBAC7\">(context)<\/span><\/span>\n<span class=\"line\"><span style=\"color: #ADBAC7\">                     }<\/span><\/span>\n<span class=\"line\"><span style=\"color: #ADBAC7\">                 }<\/span><\/span>\n<span class=\"line\"><span style=\"color: #ADBAC7\">             }<\/span><\/span>\n<span class=\"line\"><span style=\"color: #ADBAC7\">         }<\/span><\/span>\n<span class=\"line\"><span style=\"color: #ADBAC7\">     }<\/span><\/span>\n<span class=\"line\"><span style=\"color: #ADBAC7\"> }<\/span><\/span><\/code><\/pre><\/div>\n\n\n\n<p>\ubcc4\ub2e4\ub978 \uc791\uc5c5\uc5c6\uc774 Intent\ub97c \ud655\uc778 \ud6c4, fullscreen notification\uc744 \uc0dd\uc131\ud574\uc8fc\uace0 \uc788\ub2e4. <\/p>\n\n\n\n<p>\ub9c8\uc9c0\ub9c9\uc73c\ub85c, WAKE_LOCK\uc744 \uc0dd\uac01\ud574 \ubcfc \uc218 \uc788\ub2e4. \uc774 \ubd80\ubd84\ub3c4 \ud655\uc2e4\ud55c \uac80\uc99d\uc744 \uac70\uce58\uc9c0 \ubabb\ud588\ub294\ub370, sleep\uc5d0\uc11c \uae68\uc5b4\ub098 \ubcf4\ud1b5\uc740 \ubc14\ub85c sleep\uc73c\ub85c \ub4e4\uc5b4\uac00\ubbc0\ub85c \ud544\uc694\ud560\uc218\ub3c4 \uc788\ub2e4. \ub450\uac00\uc9c0\ub97c \uc0dd\uac01\ud574 \ubcfc \uc218 \uc788\ub294\ub370, BroadcastReceiver\uac00 \ub3d9\uc791\ud558\ub294\ub3d9\uc548 WAKE LOCK\uc744 \uac70\ub294 \uac83\uacfc, fullscreen Activity\uc5d0 WAKE LOCK\uc744 \uac70\ub294 \uac83\uc744 \uc0dd\uac01\ud574 \ubcfc \uc218 \uc788\ub2e4. <\/p>\n\n\n\n<p>\ub9c8\uc9c0\ub9c9\uc758 \ub9c8\uc9c0\ub9c9\uc73c\ub85c \uc0ac\uc871\uc744 \ud558\ub098\ub9cc \ub354 \ub2ec\uc790\uba74, fullscreen intent\ub85c \ub744\uc6b0\ub294 Activity\ub294 notification\uc758 dismiss\uc5d0 \ub300\ud55c \ucc45\uc784\uc744 \uac16\ub294\ub2e4. \ubcc4\ub2e4\ub978 \ucc98\ub9ac\ub97c \uc548\ud558\uba74, \ud654\uba74\uc744 \ub2eb\uc544\ub3c4 status bar\uc5d0 notification\uc774 \ub0a8\uc544\uc11c \ub3d9\uc791\ud560 \uac83\uc774\ub2e4. dismiss \ubc84\ud2bc\uc744 \ub2ec\ub4e0, Activity\uc758 pause()\ub098 stop()\uc5d0\uc11c\ub4e0 notification id\ub97c \uc774\uc6a9\ud574 \ud574\ub2f9 notification\uc744 cancel\ud574\uc918\uc57c \ud560 \uac83\uc774\ub2e4.<\/p>\n\n\n\n<p>\uc774\uc815\ub3c4\uba74 \ub300\ucda9 \ub354\ub7fd\uac8c \uc54c\uc544\ub0b8 \uc548\ub4dc\ub85c\uc774\ub4dc\uc5d0\uc11c \uc54c\ub78c \ub9cc\ub4e4\uae30 \uc815\ub9ac\ub294 \ub05d. \ubc14\uc774~<\/p>\n","protected":false},"excerpt":{"rendered":"<p>\uac04\ub2e8\ud788 \uc54c\ub78c\uc571\uc744 \ud558\ub098 \ub9cc\ub4e4\ub2e4\uac00 \uac04\ub2e8\ud788 \uc548\ub418\uc11c \uc880 \ub9ce\uc774 \ube61\uce58\uace0 \uc624\ub798\uac78\ub838\ub2e4. \uadf8 \uacbd\ud5d8\uc744 \uae30\ub85d\ud558\ub824 \ud55c\ub2e4. \ub9c8\uad6c\uc7a1\uc774\ub85c \ud558\ub2e4\uac00 \uc131\uacf5\ud558\uace0\ub098\uc11c \ubb50\uac00 \uc5b4\ub5bb\uac8c \ub3d9\uc791\ud558\ub294\uc9c0 \ud558\ub8e8\uc885\uc77c \ubc84\uc804\ubcc4\ub85c \uc774\uac83 \uc800\uac83 \ud14c\uc2a4\ud2b8 \ud574\ubd24\ub294\ub370, \uc5ec\uc804\ud788 \ud63c\ub780\uc2a4\ub7fd\uae30 \ub54c\ubb38\uc5d0 \uc801\ub2f9\ud788 \uc815\ub9ac\uac00 \ud544\uc694\ud558\ub2e4. \uc2dc\uc791\ud558\uae30\uc804\uc5d0 \uaf2d \uc54c\uc544\uc57c \ud558\ub294\uc810\uc740, Alarm \uc571\uc744 \ub9cc\ub4dc\ub294\ub370\uc5d0 AlarmManager\ub85c \ud574\uacb0\ub418\uc9c0 \uc54a\ub294\ub2e4\ub294 \uc0ac\uc2e4\uc774\ub2e4. AlarmManager\ub97c \uc0ac\uc6a9\uc740 \ud558\uaca0\uc9c0\ub9cc, \uc2e4\uc81c \ud45c\uc2dc\ud558\ub294 \ubd80\ubd84\uc740 Notification\uc744 \uc774\uc6a9\ud55c\ub2e4. \uc774\ub984\ub54c\ubb38\uc5d0 \ud568\uc815\uc5d0 \ube60\uc9c0\uc9c0\ub9d0\uc790. \uc77c\ub2e8, [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[5,34],"tags":[208,186,38,207],"class_list":["post-786","post","type-post","status-publish","format-standard","hentry","category-android","category-kotlin","tag-alarm","tag-android-2","tag-kotlin","tag-notification"],"jetpack_featured_media_url":"","_links":{"self":[{"href":"http:\/\/batmask.net\/index.php\/wp-json\/wp\/v2\/posts\/786","targetHints":{"allow":["GET"]}}],"collection":[{"href":"http:\/\/batmask.net\/index.php\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"http:\/\/batmask.net\/index.php\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"http:\/\/batmask.net\/index.php\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"http:\/\/batmask.net\/index.php\/wp-json\/wp\/v2\/comments?post=786"}],"version-history":[{"count":27,"href":"http:\/\/batmask.net\/index.php\/wp-json\/wp\/v2\/posts\/786\/revisions"}],"predecessor-version":[{"id":3533,"href":"http:\/\/batmask.net\/index.php\/wp-json\/wp\/v2\/posts\/786\/revisions\/3533"}],"wp:attachment":[{"href":"http:\/\/batmask.net\/index.php\/wp-json\/wp\/v2\/media?parent=786"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"http:\/\/batmask.net\/index.php\/wp-json\/wp\/v2\/categories?post=786"},{"taxonomy":"post_tag","embeddable":true,"href":"http:\/\/batmask.net\/index.php\/wp-json\/wp\/v2\/tags?post=786"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}