2015-04-26 7 views
11

görüntülenmeden önce durum çubuğu bildirim Handling: Bildirim cihazda yayınlanmıştır sonraben cihaz bildirimleri işlemek için <code>NotificationListenerService</code> kullanıyorum

@Override 
public void onNotificationPosted(StatusBarNotification sbn) { 

    Log.d(TAG,"onNotificationPosted posted - ID :" + sbn.getId() + "\t" 
      + sbn.getNotification().tickerText + "\t" + sbn.getPackageName()); 
} 

onNotificationPosted() yöntemi denir. Sunulmadan önce onu yakalamanın bir yolu var mı?

Okuma bildirimlerinin AccessibilityManager kullanılarak da elde edildiğini gördüm, ancak yine de bildirim atıldıktan sonra okunur.

Aygıt bildirimleri pop-up'larını bir süre kadar ertelemenin bir yolu var mı?

NotificationListenerService numarasını kullanarak bir kullanıcıyı (kullanıcılara girdikten sonra) olduğu gibi silip silebiliyorum ve daha sonra yeniden başlatmayı deneyebilirim. Ancak yeniden başlatmayla ilgili sorunlar yaşıyorum ve yine durum çubuğu bildirimi zaten gösterildikten sonra bu oluyor.

+0

Ne tür bildirimlerden bahsediyorsunuz? gcm push Bildirimleri? ya da başka bir şey ... neden göstermeden önce tüm gerekli işleri yapamazsın? – nvinayshetty

+0

Cihazdaki tüm bildirimlerdeki bildirimler. Çalışmadan önce işi yapmaktan mutlu olacağım, bu bildirimleri nasıl katlayacağım? –

+1

AFAIK android'in Bildirim Dinleyicisi, Bildirimleri işlemek ancak gösterdikten sonra tek yoldur. Aksi halde başka bir yol yoktur veya en azından bildiğim herhangi bir şey yoktur. –

cevap

7

Şu andakullanmak, StatusBarNotifications numaralı telefondan haberdar olmak ve bunlarla etkileşim kurmanın tek yoludur. Bildirimlere, durum çubuğuna ulaşmadan önce izin vermek ve işlemek izin verilmez ve oldukça dikkate değer bir güvenlik ihlali anlamına gelir - bu da burada doğrulanır: https://stackoverflow.com/questions/10286087/intercepting-notifications. Bu mümkün olsaydı, bir uygulama teoride tüm sistem uygulamaları için tüm bildirimleri engelleyebilirdi ki bu iyi bir şey olmayacaktı. Ayrıca, NotificationListenerService ile bile, yalnızca diğer uygulamalardan gelen bildirimleri görebilir, değiştiremez veya silemezsiniz. Uygulama bildirimlerini değiştirmeye/iptal etmeye yönelik yöntemler, yani cancelAllNotifications(), yalnızca çağrı yapan uygulamanın oluşturduğu bildirimleri değiştirmeye yarar.