Android教程網
  1. 首頁
  2. Android 技術
  3. Android 手機
  4. Android 系統教程
  5. Android 游戲
 Android教程網 >> Android技術 >> 關於Android編程 >> Android 監聽Notification 被清除實例代碼

Android 監聽Notification 被清除實例代碼

編輯:關於Android編程

前言

 一般非常駐的Notification是可以被用戶清除的,如果能監聽被清除的事件就可以做一些事情,比如推送重新計數的問題。

 正文

 private final BroadcastReceiver mBroadcastReceiver = new BroadcastReceiver() {

  @Override
  public void onReceive(Context context, Intent intent) {
   if (intent == null || context == null) {
    return;
   }

   mNotificationManager.cancel(NOTIFICATION_ID_LIVE);

   String type = intent.getStringExtra(PUSH_TYPE);
   if (PUSH_TYPE_LINK.equals(type)) {
    //mNumLinkes = 0;
   } else if (PUSH_TYPE_LIVE.equals(type)) {
    //mNumLives = 0;
   }
   //這裡可以重新計數
  }
 };


 private void sendLiveNotification() {
  Intent intent = new Intent(NOTIFICATION_CLICK_ACTION);

  NotificationCompat.Builder mBuilder = new NotificationCompat.Builder(this);

  String title = "Push測試";
  mBuilder.setContentTitle(title);
  mBuilder.setTicker(title);
  mBuilder.setContentText("https://233.tv/over140");
  mBuilder.setLargeIcon(BitmapFactory.decodeResource(getResources(), R.mipmap.ic_launcher));
  mBuilder.setSmallIcon(R.drawable.ic_action_cast);
  mBuilder.setDefaults(Notification.DEFAULT_ALL);
  mBuilder.setWhen(System.currentTimeMillis());
  mBuilder.setContentIntent(PendingIntent.getBroadcast(this, NOTIFICATION_ID_LIVE, intent, 0));
  mBuilder.setDeleteIntent(PendingIntent.getBroadcast(this, NOTIFICATION_ID_LIVE, new Intent(NOTIFICATION_DELETED_ACTION).putExtra(PUSH_TYPE, PUSH_TYPE_LIVE), 0));

  mNotificationManager.notify(NOTIFICATION_ID_LIVE, mBuilder.build());
 }

代碼說明

  1、最重要的是setDeleteIntent,這個在API Level 11(Android 3.0) 新增的

  2、注意不要設置setAutoCancel為true,否則監聽器接收不到

  3、這裡統一了點擊通知和消除通知的操作

  4、注意廣播在推送前要注冊好

實際使用中發現還是有一點問題,比如Service被Kill掉了,通知欄點擊就會沒有反應了,這塊還需要再考慮一下,比如把Broadcast在AndroidMainfest中監聽。

以上就是對Android Notification 事件的資料整理,希望能幫助Android開發的朋友。

  1. 上一頁:
  2. 下一頁:
熱門文章
閱讀排行版
Copyright © Android教程網 All Rights Reserved