您的應用程式在某些情況下可能需要立即引起使用者註意。 例如正在響鈴的鬧鐘或來電指定執行平台裝置的應用程式內 Android 9 (API 級別 28) 以下版本;如要處理這種情況,您可以啟動 應用程式在背景執行時的活動。本文件說明如何在搭載 Android 10 (API 級別 29) 至 Android 13 (API 級別 33) 的裝置上實現這項行為。
新增 POST_NOTIFICATIONS 權限
從 Android 13 開始,請在
AndroidManifest.xml
檔案:
<manifest ...> <uses-permission android:name="android.permission.POST_NOTIFICATIONS"/> <application ...> ... </application> </manifest>
完成後,您就可以建立通知管道。
建立通知管道
建立通知管道以正確顯示通知,並 使用者必須透過應用程式設定管理通知。如要進一步瞭解 通知管道,請參閱建立及管理通知 管道。
在 Application
的類別中建立通知管道
onCreate
方法:
Kotlin
class DACapp : Application() { override fun onCreate() { super.onCreate() val channel = NotificationChannel( CHANNEL_ID, "High priority notifications", NotificationManager.IMPORTANCE_HIGH ) val notificationManager = getSystemService(Context.NOTIFICATION_SERVICE) as NotificationManager notificationManager.createNotificationChannel(channel) } }
使用者首次執行應用程式時,會看到如圖 1 所示 在應用程式的「App info」(應用程式資訊) 系統畫面中:
管理通知權限
從 Android 13 開始,請在以下日期前要求通知權限: 向使用者顯示通知時
最少實作內容如下所示:
Kotlin
val permissionLauncher = rememberLauncherForActivityResult( contract = ActivityResultContracts.RequestPermission(), onResult = { hasNotificationPermission = it } ) ... Button( onClick = { if (!hasNotificationPermission) { if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.TIRAMISU) { permissionLauncher.launch(Manifest.permission.POST_NOTIFICATIONS) } } }, ) { Text(text = "Request permission") }
如果裝置搭載的是 Android 13,輕觸 Request
permission
按鈕可觸發圖 2 所示的對話方塊:
如果使用者接受權限要求,應用程式的「應用程式資訊」部分會顯示 就像圖 3:
建立高優先順序通知
建立通知時,請提供描述性的標題和訊息。
以下範例包含通知:
Kotlin
private fun showNotification() { val notificationManager = getSystemService(Context.NOTIFICATION_SERVICE) as NotificationManager val notificationBuilder = NotificationCompat.Builder(this, CHANNEL_ID) .setSmallIcon(R.drawable.baseline_auto_awesome_24) .setContentTitle("HIGH PRIORITY") .setContentText("Check this dog puppy video NOW!") .setPriority(NotificationCompat.PRIORITY_HIGH) .setCategory(NotificationCompat.CATEGORY_RECOMMENDATION) notificationManager.notify(666, notificationBuilder.build()) }
向使用者顯示通知
呼叫 showNotification()
函式會觸發通知,如下所示:
Kotlin
Button(onClick = { showNotification() }) { Text(text = "Show notification") }
這個範例中的通知如圖 4 所示:
持續性通知
當您向使用者顯示通知時,他們可以進行確認或關閉 來接收應用程式快訊或提醒舉例來說,使用者可以接受或拒絕 來電顯示。
如果是進行中的通知 (例如有人來電), 連結通知與前景 服務。下列程式碼片段 說明如何顯示與前景服務相關聯的通知:
Kotlin
// Provide a unique integer for the "notificationId" of each notification. startForeground(notificationId, notification)
Java
// Provide a unique integer for the "notificationId" of each notification. startForeground(notificationId, notification);