2016-03-26 7 views
4

Android'de, NotificationListenerService ile geçerli etkin bildirimlerin bir listesini alabileceğinizi biliyorum. Ancak eski bildirimlerin bir listesini almak mümkündür (artık aktif değil).Android - eski bildirimlerin listesini al

Android OS'de Bildirim Günlüğü adı verilen bir özellik olduğunu biliyorum. Sadece benim uygulamam için aynı içeriğe sahip olmak mümkün mü? Ya da bu tür bir geçmişi korumak için uygulama düzeyinde ele alınması gerekiyor mu?

cevap

2

Maalesef Bildirim Günlüğü uses numaralı getHistoricalNotifications yönteminin ACCESS_NOTIFICATIONS gerektirmesine izin vermektedir. Bu nedenle sistem uygulamaları için ayrılmıştır:

/** 
* System-only API for getting a list of recent (cleared, no longer shown) notifications. 
* 
* Requires ACCESS_NOTIFICATIONS which is signature|system. 
*/ 
@Override 
public StatusBarNotification[] getHistoricalNotifications(String callingPkg, int count) { 
    // enforce() will ensure the calling uid has the correct permission 
    getContext().enforceCallingOrSelfPermission(
      android.Manifest.permission.ACCESS_NOTIFICATIONS, 
      "NotificationManagerService.getHistoricalNotifications"); 

    StatusBarNotification[] tmp = null; 
    int uid = Binder.getCallingUid(); 

    // noteOp will check to make sure the callingPkg matches the uid 
    if (mAppOps.noteOpNoThrow(AppOpsManager.OP_ACCESS_NOTIFICATIONS, uid, callingPkg) 
      == AppOpsManager.MODE_ALLOWED) { 
     synchronized (mArchive) { 
      tmp = mArchive.getArray(count); 
     } 
    } 
    return tmp; 
} 

tek uygun seçenek, bir NotificationListenerService oluşturmak yöntemi onNotificationPosted uygulamak ve uygulamalar tarafından yayınlanan yeni bildirimleri hakkında yerel izlemek etmektir.