[英]OnNotification click listener
我的 Android 應用程序使用警報管理器實現了本地通知。 應用流程如下:SplashActivity > BiometricActivity > ProfileActivity > MainActivity > DetailedActivity。 當 DetailedActivity 恢復時,app 設置 30 秒后的鬧鍾,並通過 pending intent 發送給 AlarmBroadcast class。 Alarm Broadcast 收到意圖,為 NotificationActivity class 設置一個掛起的意圖,創建一個通知,並發送它。
我正在嘗試實現三種情況:
如果應用程序已打開並且用戶已通過 BiometricActivity,則應打開 NotificationActivity。
如果應用程序在后台運行,如果用戶通過了 BiometricActivity,它應該來到前台並打開 NotificationActivity,否則,它應該先打開 BiometricActivity,然后在成功時顯示 NotificationActivity。
如果應用程序已關閉,它應該在單擊通知時啟動並打開 NotificationActivity。 我在實現 onNotificationClickListener 時遇到了問題,並且僅限於在 AlarmBroadcast class 的 OnReceive 方法中的 Pending Intent 中設置一個活動。我已經堅持了兩天,非常感謝任何解決方案的建議。(API 32)
謝謝
就通知而言,它們工作正常,但 NotificationActivity 總是在通知點擊時顯示。 我想實現不同的場景(如上所述),但我只能將待定意圖發送到一個活動。 我可以檢測應用程序是否在警報接收器中運行,並相應地設置掛起的意圖。 但是應用程序 state 可以在用戶點擊通知時更改
一般來說,最好的辦法是讓Notification
啟動一個“調度程序” Activity
。 “調度員”然后必須弄清楚應用程序的當前 state 是什么,並相應地重定向用戶。
如果應用程序在前台,“調度程序” Activity
將在應用程序的當前 state 之上啟動。
如果應用程序在后台,它將在它所在的任何 state 中被提出,並且“調度程序” Activity
將在其之上啟動。
如果應用程序根本沒有運行,Android 將為應用程序創建一個新任務並將“調度程序” Activity
啟動到該任務中。
在所有情況下,“調度程序” Activity
應在onCreate()
中評估應用程序的 state(即:用戶是否登錄等),然后通過調用startActivity()
立即將用戶重定向到適當的Activity
具有正確的 class 和標志(FLAG_ACTIVITY_SINGLE_TOP FLAG_ACTIVITY_SINGLE_TOP, FLAG_ACTIVITY_CLEAR_TOP
FLAG_ACTIVITY_CLEAR_TOP、 FLAG_ACTIVITY_CLEAR_TASK
等)的Intent
,具體取決於 state。“調度程序” Activity
不需要任何 UI,因為它是短暫的(在onCreate()
).
“調度程序” Activity
應在其清單聲明中設置以下內容:
android:noHistory="true"
android:excludeFromRecents="true"
這些屬性將確保從主屏幕再次啟動應用程序不會啟動“調度程序” Activity
,並且如果用戶從最近任務列表中恢復任務,Android 也不會通過啟動“調度程序”來恢復任務Activity
。
“調度程序” Activity
可以通過檢查isTaskRoot()
返回的值來確定它是否是任務中唯一的Activity
。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.