2017-09-06 59 views
0

我有應用程序,發送通知給用戶不時。其中一些非常重要,所以我將它們設置爲正在進行中,所以用戶不能通過滑動刪除它們,當用戶在應用程序中刪除它們時(或者當應用程序被強制停止時),它們將被刪除。Android Xamarin - 獲取應用程序的通知或保持數據,直到應用程序被強制停止

當我創建此通知時,我添加了一些數據(通知創建的名稱,文本,ID和日期時間)到靜態列表的對象,它的工作原理。但是當有一些重要的正在進行的通知並且用戶關閉應用程序時(通過左側的hw按鈕進入活動應用程序的列表並將其刷卡),通知的靜態列表將被清除。

所以我怎能:

  • 保存數據(對象的列表),直到應用程序是力殺死(所以直到通知消失)

OR

  • 獲取集合由應用程序創建的主動通知(需要名稱和ID, ,如果可能甚至包括文本)

感謝

編輯:如果你知道一些有關Java的開發移動應用程序,你可以幫我說你會怎麼做,在Java中,Xamarin是非常相似的,所以如果你這樣做,我想想,我可以找到一種方法。

回答

1

如果要創建不可清除通知,對於Api級別低於11的設置,請設置Notification.FLAG_NO_CLEAR

對於Api級別高於11,將setOngoing設置爲true,這將使通知不會被用戶解僱。

例如:

Notification.Builder builder = new Notification.Builder(this) 
     .SetContentTitle("Sample Notification") 
     .SetContentText("Hello World! This is my first notification!") 
     .SetSmallIcon(Resource.Drawable.ic_notification) 
     .SetOngoing(true); 

其設置爲true後,請確保您的應用程序/服務將處理該通知的取消。

更新:通過應用程序(需要姓名和身份證,如果可能的話甚至文本)

NotificationManager notifyManager = (NotificationManager)GetSystemService(Context.NotificationService); 
StatusBarNotification[] notificationList = notifyManager.GetActiveNotifications(); 

foreach (Android.Service.Notification.StatusBarNotification sbnin notificationList) 
{ 
    Debug.WriteLine("sbn.Id " + sbn.Id); 
    Debug.WriteLine("sbn.PostTime " + sbn.PostTime); 
    Debug.WriteLine("System.Diagnostics.Debug.WriteLine("notification = " + sbn.ToString());= " + sbn.ToString()); 
} 

保存數據創建活動通知

獲取集合(名單對象),直到應用程序被強行殺死(所以直到通知消失)

由於Samuh said,當你創建一個Android應用程序,並初始化靜態變量,它會留在JVM中,直到發生下列情況之一:

  • 類被卸載
  • JVM關閉
  • 進程模

因此,你的靜態列表將存在,直到你的應用程序被強行殺死。正如你所說,

用戶關閉應用程序(通過左HW按鈕變爲有效狀態的應用程序的列表,並刷卡,關閉它),通知的靜態列表被清除。

所以你有實現這個功能,如果這不是你想要的效果,請詳細說明一下。

如果要在應用程序關閉時保存列表,則可以嘗試將列表保存到onstop等等中以共享首選項或文件。

+0

是的,我已經這樣做了。但我怎麼能: 1)獲取應用程序創建的所有活動通知 2)應用程序關閉後保存數據,但直到應用程序被強制停止 我想選擇用戶只關閉通知的應用程序,我這樣做:當用戶創建通知時,我將它添加到靜態列表中。但是,當應用程序關閉時(通過刷卡而不是強行停止),靜態列表被清除,但通知仍然存在。在遊戲被強制停止之前如何保存數據,或者如何獲取我的活動通知列表?或者我如何測試通知ID是否存在? – SoptikHa

+1

@SoptikHa,對於遲到的回覆抱歉,我更新了我的回答,你可以看看。 –

+0

謝謝!我不在家,沒有任何電腦在這裏測試,所以我會在3或4天內嘗試。感謝您的回答 :-) – SoptikHa

相關問題