簡體   English   中英

OnNotification 點擊監聽器

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM