Android 监听Notification 被清除实例代码

简介: Android 监听Notification 被清除实例代码
public class NotifiDoWhatReceiver extends BroadcastReceiver {
    @Override
    public void onReceive(Context context, Intent intent) {
        if (intent == null || context == null) {
            return;
        }
        String action = intent.getAction();
        if(action.equals(NOTIFICATION_DELETED_ACTION)){
            int type = intent.getIntExtra(PUSH_TYPE,-1);
            int notiid  = intent.getIntExtra(PUSH_ID,-1);
            String url = intent.getStringExtra(Constant.DATA);
            if(type==0){
                //apk下载
                ((NotificationManager) context.getSystemService(Context.NOTIFICATION_SERVICE)).cancel(notiid);
                if(downCalls.containsKey(url)){
                    downCalls.remove(url);
                }
            }
        }
    }
 
}
 public void initNotification() {
        builder = new NotificationCompat.Builder(mContext)
                .setSmallIcon(R.mipmap.ic_launcher)
                .setContentText("0%")
                .setContentTitle("初心客厅")
                .setProgress(100, 0, false).setDeleteIntent(PendingIntent.getBroadcast(this, NOTIFICATION_ID_APK,
     new Intent(NOTIFICATION_DELETED_ACTION).putExtra(PUSH_ID, NOTIFICATION_ID_APK).putExtra(PUSH_TYPE, 0).putExtra(Constant.DATA, url), 0));
        notificationManager = (NotificationManager) mContext.getSystemService(Context.NOTIFICATION_SERVICE);
        notificationManager.notify(NOTIFICATION_ID_APK, builder.build());
    }

参考资料


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开发的朋友。


目录
打赏
0
0
1
0
6
分享
相关文章
Android远程连接和登录FTPS服务代码(commons.net库)
Android远程连接和登录FTPS服务代码(commons.net库)
61 1
探索安卓与iOS开发的差异:从代码到用户体验
【10月更文挑战第5天】在移动应用开发的广阔天地中,安卓和iOS两大平台各占半壁江山。它们在技术架构、开发环境及用户体验上有着根本的不同。本文通过比较这两种平台的开发过程,揭示背后的设计理念和技术选择如何影响最终产品。我们将深入探讨各自平台的代码示例,理解开发者面临的挑战,以及这些差异如何塑造用户的日常体验。
🔥Android开发大神揭秘:从菜鸟到高手,你的代码为何总是慢人一步?💻
在Android开发中,每位开发者都渴望应用响应迅速、体验流畅。然而,代码执行缓慢却是常见问题。本文将跟随一位大神的脚步,剖析三大典型案例:主线程阻塞导致卡顿、内存泄漏引发性能下降及不合理布局引起的渲染问题,并提供优化方案。通过学习这些技巧,你将能够显著提升应用性能,从新手蜕变为高手。
61 2
Android调用Vue中的JavaScript代码
Android调用Vue中的JavaScript代码
93 3
Android远程连接和登录FTPS服务代码(commons.net库)
很多文章都介绍了FTPClient如何连接ftp服务器,但却很少有人说如何连接一台开了SSL认证的ftp服务器,现在代码来了。
136 2
Android经典面试题之实战经验分享:如何简单实现App的前后台监听判断
本文介绍在Android中判断应用前后台状态的两种方法:`ActivityLifecycleCallbacks`和`ProcessLifecycleOwner`。前者提供精细控制,适用于需针对每个Activity处理的场景;后者简化前后台检测,适用于多数应用。两者各有优劣:`ActivityLifecycleCallbacks`更精确但复杂度高;`ProcessLifecycleOwner`更简便但可能在极端场景下略有差异。根据应用需求选择合适方法。
64 2
🔥Android开发大神揭秘:从菜鸟到高手,你的代码为何总是慢人一步?💻
【7月更文挑战第28天】在Android开发中,每位开发者都追求极致的用户体验。然而,“代码执行慢”的问题时常困扰着开发者。通过案例分析,我们可探索从新手到高手的成长路径。
53 3
Android项目架构设计问题之要提升代码的可读性和管理性如何解决
Android项目架构设计问题之要提升代码的可读性和管理性如何解决
53 0
技术经验分享:Android前后台切换的监听
技术经验分享:Android前后台切换的监听
154 2
使用Unidbg进行安卓逆向实例讲解
使用Unidbg进行安卓逆向实例讲解
216 2

热门文章

最新文章

  • 1
    Android历史版本与APK文件结构
    133
  • 2
    【08】flutter完成屏幕适配-重建Android,增加GetX路由,屏幕适配,基础导航栏-多版本SDK以及gradle造成的关于fvm的使用(flutter version manage)-卓伊凡换人优雅草Alex-开发完整的社交APP-前端客户端开发+数据联调|以优雅草商业项目为例做开发-flutter开发-全流程-商业应用级实战开发-优雅草Alex
    31
  • 3
    当flutter react native 等混开框架-并且用vscode-idea等编译器无法打包apk,打包安卓不成功怎么办-直接用android studio如何打包安卓apk -重要-优雅草卓伊凡
    4
  • 4
    APP-国内主流安卓商店-应用市场-鸿蒙商店上架之必备前提·全国公安安全信息评估报告如何申请-需要安全评估报告的资料是哪些-优雅草卓伊凡全程操作
    11
  • 5
    【03】仿站技术之python技术,看完学会再也不用去购买收费工具了-修改整体页面做好安卓下载发给客户-并且开始提交网站公安备案-作为APP下载落地页文娱产品一定要备案-包括安卓android下载(简单)-ios苹果plist下载(稍微麻烦一丢丢)-优雅草卓伊凡
    43
  • 6
    【09】flutter首页进行了完善-采用android studio 进行真机调试开发-增加了直播间列表和短视频人物列表-增加了用户中心-卓伊凡换人优雅草Alex-开发完整的社交APP-前端客户端开发+数据联调|以优雅草商业项目为例做开发-flutter开发-全流程-商业应用级实战开发-优雅草Alex
    10
  • 7
    【02】仿站技术之python技术,看完学会再也不用去购买收费工具了-本次找了小影-感觉页面很好看-本次是爬取vue需要用到Puppeteer库用node.js扒一个app下载落地页-包括安卓android下载(简单)-ios苹果plist下载(稍微麻烦一丢丢)-优雅草卓伊凡
    18
  • 8
    Cellebrite UFED 4PC 7.71 (Windows) - Android 和 iOS 移动设备取证软件
    30
  • 9
    Android经典面试题之Kotlin中Lambda表达式和匿名函数的区别
    3
  • 10
    【01】仿站技术之python技术,看完学会再也不用去购买收费工具了-用python扒一个app下载落地页-包括安卓android下载(简单)-ios苹果plist下载(稍微麻烦一丢丢)-客户的麻将软件需要下载落地页并且要做搜索引擎推广-本文用python语言快速开发爬取落地页下载-优雅草卓伊凡
    12
  • 1
    即时通讯安全篇(一):正确地理解和使用Android端加密算法
    12
  • 2
    escrcpy:【技术党必看】Android开发,Escrcpy 让你无线投屏新体验!图形界面掌控 Android,30-120fps 超流畅!🔥
    29
  • 3
    【01】噩梦终结flutter配安卓android鸿蒙harmonyOS 以及next调试环境配鸿蒙和ios真机调试环境-flutter项目安卓环境配置-gradle-agp-ndkVersion模拟器运行真机测试环境-本地环境搭建-如何快速搭建android本地运行环境-优雅草卓伊凡-很多人在这步就被难倒了
    41
  • 4
    Cellebrite UFED 4PC 7.71 (Windows) - Android 和 iOS 移动设备取证软件
    30
  • 5
    【03】仿站技术之python技术,看完学会再也不用去购买收费工具了-修改整体页面做好安卓下载发给客户-并且开始提交网站公安备案-作为APP下载落地页文娱产品一定要备案-包括安卓android下载(简单)-ios苹果plist下载(稍微麻烦一丢丢)-优雅草卓伊凡
    43
  • 6
    Android历史版本与APK文件结构
    134
  • 7
    【02】仿站技术之python技术,看完学会再也不用去购买收费工具了-本次找了小影-感觉页面很好看-本次是爬取vue需要用到Puppeteer库用node.js扒一个app下载落地页-包括安卓android下载(简单)-ios苹果plist下载(稍微麻烦一丢丢)-优雅草卓伊凡
    36
  • 8
    【01】仿站技术之python技术,看完学会再也不用去购买收费工具了-用python扒一个app下载落地页-包括安卓android下载(简单)-ios苹果plist下载(稍微麻烦一丢丢)-客户的麻将软件需要下载落地页并且要做搜索引擎推广-本文用python语言快速开发爬取落地页下载-优雅草卓伊凡
    30
  • 9
    APP-国内主流安卓商店-应用市场-鸿蒙商店上架之必备前提·全国公安安全信息评估报告如何申请-需要安全评估报告的资料是哪些-优雅草卓伊凡全程操作
    61
  • 10
    【09】flutter首页进行了完善-采用android studio 进行真机调试开发-增加了直播间列表和短视频人物列表-增加了用户中心-卓伊凡换人优雅草Alex-开发完整的社交APP-前端客户端开发+数据联调|以优雅草商业项目为例做开发-flutter开发-全流程-商业应用级实战开发-优雅草Alex
    40
  • AI助理

    你好,我是AI助理

    可以解答问题、推荐解决方案等