|
Notification-ni qanday bekor qilishga misol
|
bet | 5/7 | Sana | 19.05.2024 | Hajmi | 239,8 Kb. | | #243587 |
Bog'liq ANDROID NOTIFICATIONSNotification-ni qanday bekor qilishga misol :
private fun cancelNotification() {
notificationManager.cancel(NOTIFICATION_ID)
}
Notification-ni yangilash ularni ko’rsatish bilan bir xil. Builder obyekti bilan boshqa notification yaratishingiz kerak, so’ngra NotificationManager-dan uni bir xil notification ID-dan foydalanib ko’rsatishini so’rang. Shunday qilib, NotificationManager notification-ni yangisi bilan yangilashni biladi.
Pending Intent.
Ba’zan foydalanuvchi notification-ni bosgandan so’ng, masalan, activity-ni ko’rsatish yoki Service-ni ishga tushirish yoki shunchaki broadcast receiver-ga intent yuborish kabi amal bajarilishini xohlaysiz.
Bu harakatlarning barchasi Intent-ni talab qiladi. Va bu muammo — biz bu yerda intent-lardan foydalana olmaymiz.
Agar siz ilovangizdagi Activity-ni ishga tushirmoqchi bo’lsangiz, bu umuman muammo emas. Ilovangizda, intent bilan startActivity() ni chaqirganingizda, ilovangiz buni amalga oshirish uchun ruxsat (permission)-ga ega.
Launcher (system component) kerakli permission-larsiz Activity-ni ishga tushirmoqchi bo’lganda muammo kelib chiqadi. Shu sababli, bizga boshqa turdagi intent kerak bo’ladi va bu Pending intent.
PendingIntent — bu siz boshqa ilovalarga (masalan, NotificationManager) beradigan token turi bo’lib, u boshqa ilovaga biror narsani bajarish uchun ilovangiz ruxsatlaridan foydalanish imkonini beradi.
Shunday qilib, agar siz boshqa dasturga intent jo’natsangiz, u o’z permission-lari bilan intent-ni amalga oshiradi. Agar siz begona ilovasiga PendingIntent bersangiz, u ilova, sizning ilovangiz permission-laridan foydalanib intent-ni amalga oshiradi.
Siz ishga tushirmoqchi bo’lgan komponentga qarab getActivity() va getService() kabi statik metodlardan foydalangan holda PendingIntent yaratishingiz mumkin. Va bu metodlar doirasida siz oddiy vaziyatlarda bo’lgani kabi intent-ni belgilashingiz kerak. Shuningdek, siz flag va parametrlarni qo’shishingiz mumkin — shu tarzda PendingIntent sizning intent uchun begona ilova tomonidan foydalanish uchun o’ram (wrapper) vazifasini bajaradi.
Notification-ni bosgandan so’ng MainActivity-ni ishga tushirish uchun PendingIntent yaratamiz. Buni amalga oshirish uchun kod :
val intent = Intent(this, MainActivity::class.java).apply {
flags = Intent.FLAG_ACTIVITY_NEW_TASK or Intent.FLAG_ACTIVITY_CLEAR_TASK
}
val pendingIntent: PendingIntent = PendingIntent.getActivity(this, 0, intent, 0)
val builder = NotificationCompat.Builder(this, PRIMARY_CHANNEL_ID).apply {
setSmallIcon(R.drawable.ic_android)
setContentIntent(pendingIntent)
setContentTitle("Notification Article")
setContentText("Learn How To Manage And Display Notifications in Android")
setAutoCancel(true)
setPriority(NotificationCompat.PRIORITY_DEFAULT)
}
with(NotificationManagerCompat.from(this)) {
notify(NOTIFICATION_ID, builder.build())
}
|
| |