kotlin實(shí)現(xiàn)通知欄提醒功能示例代碼
一、概述
2019年英雄聯(lián)盟LPL賽區(qū)賽季賽打得火熱,作為一個(gè)RNG粉絲,想通過(guò)app實(shí)現(xiàn)RNG賽程提醒,于是就有了這次技術(shù)實(shí)踐。我在網(wǎng)上找了很久,幾乎沒(méi)找到使用kotlin實(shí)現(xiàn)通知欄提醒的合適的文章,于是就到安卓官網(wǎng)看文檔,一邊翻譯一邊研究,最終實(shí)現(xiàn)了一個(gè)簡(jiǎn)單的通知欄提醒。又研究了定時(shí)任務(wù),但沒(méi)有成功,還望看到的大佬給個(gè)錦囊。
二、環(huán)境
kotlin版本:1.3.31
android studio版本:3.4.1
在華為手機(jī)android 9 API28 環(huán)境下測(cè)試通過(guò)
三、實(shí)現(xiàn)
1、創(chuàng)建一個(gè) Empty Activity 項(xiàng)目后,編輯 activity_main.xml 文件
<?xml version="1.0" encoding="utf-8"?> <LinearLayout android:layout_width="match_parent" android:layout_height="wrap_content" android:orientation="vertical" xmlns:android="http://schemas.android.com/apk/res/android"> <Button android:onClick="showNotification" android:text="顯示通知" android:layout_width="match_parent" android:layout_height="wrap_content"/> </LinearLayout>
2、在類(lèi) MainActivity 創(chuàng)建 showNotification 方法
fun showNotification(view: View) { // CHANNEL_ID:通道ID,可在類(lèi) MainActivity 外自定義。如:val CHANNEL_ID = 'msg_1' val builder = NotificationCompat.Builder(this, CHANNEL_ID) .setSmallIcon(R.mipmap.ic_launcher) .setContentTitle("RNG賽程提醒") .setContentText("今天晚上19:00,RNG對(duì)陣IG") // 通知優(yōu)先級(jí),可以設(shè)置為int型,范圍-2至2 .setPriority(NotificationCompat.PRIORITY_MAX ) // 顯示通知 with(NotificationManagerCompat.from(this)) { notify(1, builder.build()) } }
3、為了兼容Android 8.0及更高版本,傳遞通知之前,必須在系統(tǒng)中注冊(cè)應(yīng)用程序的通知通道。創(chuàng)建好后在 onCreate 函數(shù)內(nèi)調(diào)用
private fun createNotificationChannel() { if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) { val name = getString(R.string.channel_name) val descriptionText = getString(R.string.channel_description) // 提醒式通知(橫幅顯示),不過(guò)大部分需要手動(dòng)授權(quán) val importance = NotificationManager.IMPORTANCE_HIGH val channel = NotificationChannel(CHANNEL_ID, name, importance).apply {description = descriptionText} // 注冊(cè)通道(頻道) val notificationManager: NotificationManager = getSystemService(Context.NOTIFICATION_SERVICE) as NotificationManager notificationManager.createNotificationChannel(channel) } }
四、總結(jié)
對(duì)于報(bào)錯(cuò)部分,可以使用 Alt+Enter 組合鍵完成錯(cuò)誤更正。
詳細(xì)的通知使用,請(qǐng)轉(zhuǎn)到官網(wǎng)研究。developer.android.google.cn/training/no…
初次發(fā)文,若有不足的地方,還請(qǐng)指正。成品截圖
總結(jié)
以上就是這篇文章的全部?jī)?nèi)容了,希望本文的內(nèi)容對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,謝謝大家對(duì)腳本之家的支持。
相關(guān)文章
Android實(shí)現(xiàn)apk插件方式換膚的實(shí)例講解
在本篇文章里小編給大家整理的是關(guān)于Android實(shí)現(xiàn)apk插件方式換膚的實(shí)例代碼以及相關(guān)知識(shí)點(diǎn),有需要的朋友們學(xué)習(xí)下。2019-10-10Android 狀態(tài)欄的設(shè)置適配問(wèn)題詳解
這篇文章主要介紹了Android 狀態(tài)欄的設(shè)置適配問(wèn)題詳解的相關(guān)資料,需要的朋友可以參考下2017-06-06Android如何判斷當(dāng)前點(diǎn)擊位置是否在圓的內(nèi)部
這篇文章主要為大家詳細(xì)介紹了Android如何判斷當(dāng)前點(diǎn)擊位置是否在圓的內(nèi)部,解析拖動(dòng)圓形控件之內(nèi)響應(yīng)觸摸事件,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2018-05-05Android編程之SurfaceView學(xué)習(xí)示例詳解
這篇文章主要介紹了Android編程之SurfaceView學(xué)習(xí)示例,結(jié)合實(shí)例分析了SurfaceView的功能、使用方法與注意事項(xiàng),具有一定參考借鑒價(jià)值,需要的朋友可以參考下2015-10-10Flutter 開(kāi)發(fā)一個(gè)登錄頁(yè)面
登錄頁(yè)面在 App 開(kāi)發(fā)中非常常見(jiàn),本篇借登錄頁(yè)面的開(kāi)發(fā)介紹了文本框 TextField組件的使用,同時(shí)使用文本框的裝飾屬性實(shí)現(xiàn)了個(gè)性化文本框設(shè)置。2021-06-06詳解Android創(chuàng)建Handler的必備知識(shí)點(diǎn)
本篇文章主要介紹Handler中需要了解的幾個(gè)必備知識(shí)點(diǎn),比如Handler創(chuàng)建、異步Handler是個(gè)啥及如何創(chuàng)建,感興趣的小伙伴快跟隨小編一起學(xué)習(xí)一下2022-10-10Flutter實(shí)現(xiàn)牛頓擺動(dòng)畫(huà)效果的示例代碼
牛頓擺大家應(yīng)該都不陌生,也叫碰碰球、永動(dòng)球(理論情況下),那么今天我們用Flutter實(shí)現(xiàn)這么一個(gè)理論中的永動(dòng)球,可以作為加載Loading使用,需要的可以參考一下2022-04-04Android開(kāi)發(fā)筆記之:Handler Runnable與Thread的區(qū)別詳解
本篇文章是對(duì)在Android中Handler Runnable與Thread的區(qū)別進(jìn)行了詳細(xì)的分析介紹,需要的朋友參考下2013-05-05Android?Studio實(shí)現(xiàn)簡(jiǎn)易計(jì)算器源碼
這篇文章主要為大家詳細(xì)介紹了Android?Studio實(shí)現(xiàn)簡(jiǎn)易計(jì)算器源碼,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2022-05-05