热门标签 | HotTags
当前位置:  开发笔记 > Android > 正文

AndroidNotification使用方法总结

这篇文章主要介绍了AndroidNotification使用方法总结的相关资料,这里提供了四种使用方法,需要的朋友可以参考下

Android Notification使用方法总结

一. 基本使用

1.构造notification

 NotificationCompat.Builder mBuilder = new NotificationCompat.Builder(appContext)
          .setSmallIcon(appContext.getApplicationInfo().icon)
          .setWhen(System.currentTimeMillis())
          .setAutoCancel(true)//当点击通知的时候会自动取消
          .setContentTitle(contentTitle)
          .setTicker(notifyText)//状态栏提示
          .setContentText(summaryBody)
          .setContentIntent(pendingIntent)
          .setNumber(notificationNum);
      Notification notification = mBuilder.build();

2.显示通知

notificatiOnManager= (NotificationManager) context.getSystemService(Context.NOTIFICATION_SERVICE);
notificationManager.notify(notifyID, notification);

3.手机震动提醒

/**
   * 手机震动和声音提示
   */
  public void viberateAndPlayTone(EMMessage message) {
    if(message != null){
      if(EMChatManager.getInstance().isSlientMessage(message)){
        return;
      } 
    }


    if (System.currentTimeMillis() - lastNotifiyTime <1000) {
      // received new messages within 2 seconds, skip play ringtone
      return;
    }

    try {
      lastNotifiyTime = System.currentTimeMillis();

      // 判断是否处于静音模式
      if (audioManager.getRingerMode() == AudioManager.RINGER_MODE_SILENT) {
        EMLog.e(TAG, "in slient mode now");
        return;
      }
      EaseSettingsProvider settingsProvider = EaseUI.getInstance().getSettingsProvider();
      if(settingsProvider.isMsgVibrateAllowed(message)){//检测是否允许震动
        long[] pattern = new long[] { 0, 180, 80, 120 };
        vibrator.vibrate(pattern, -1);
      }

      if(settingsProvider.isMsgSoundAllowed(message)){//检测是否允许声音
        if (ringtOne== null) {
          Uri notificatiOnUri= RingtoneManager.getDefaultUri(RingtoneManager.TYPE_NOTIFICATION);//获取系统默认通知铃声

          ringtOne= RingtoneManager.getRingtone(appContext, notificationUri);
          if (ringtOne== null) {
            EMLog.d(TAG, "cant find ringtone at:" + notificationUri.getPath());
            return;
          }
        }

        if (!ringtone.isPlaying()) {//防止响铃叠加
          String vendor = Build.MANUFACTURER;

          ringtone.play();
          // for samsung S3, we meet a bug that the phone will
          // continue ringtone without stop
          // so add below special handler to stop it after 3s if
          // needed
          if (vendor != null && vendor.toLowerCase().contains("samsung")) {
            Thread ctlThread = new Thread() {
              public void run() {
                try {
                  Thread.sleep(3000);
                  if (ringtone.isPlaying()) {
                    ringtone.stop();
                  }
                } catch (Exception e) {
                }
              }
            };
            ctlThread.run();
          }
        }
      }
    } catch (Exception e) {
      e.printStackTrace();
    }
  }

4.取消Notification

void cancelNotificaton() {
    if (notificationManager != null)
    notificationManager.cancel(notifyID);//根据ID取消,每个Notification都有唯一的ID。一般在Activity的基类的onResume调用。这样可以达到进入程序后,通知自动取消的效果
}

如有疑问请留言或者到本站社区交流讨论,感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!


推荐阅读
  • 落樱3D v0.5是一款在Android平台上发布的3D美少女格斗游戏,本次更新带来了多项新功能和优化。 ... [详细]
  • 优化局域网SSH连接延迟问题的解决方案
    本文介绍了解决局域网内SSH连接到服务器时出现长时间等待问题的方法。通过调整配置和优化网络设置,可以显著缩短SSH连接的时间。 ... [详细]
  • Qt中QSpinBox与QSlider的联动实现
    本文介绍如何在Qt框架下将QSpinBox和QSlider组件进行联动,使用户在拖动滑块或修改文本框中的数值时,两个组件能同步更新,从而提供更加直观和便捷的用户体验。 ... [详细]
  • 百度搜索结果链接提取工具 UrlGetter V1.43
    该工具专为获取百度搜索引擎的结果页面中的网址链接而设计,能够解析并转换为原始URL。通过正则表达式匹配技术,精准提取网页链接,并提供详细的使用说明和下载资源。 ... [详细]
  • 本文介绍了如何使用Java中的同步方法和同步代码块来实现两个线程的交替打印。一个线程负责打印1到52的数字,另一个线程负责打印A到Z的字母,确保输出顺序为12A34B...5152Z。 ... [详细]
  • 本文将介绍网易NEC CSS框架的规范及其在实际项目中的应用。通过详细解析其分类和命名规则,探讨如何编写高效、可维护的CSS代码,并分享一些实用的学习心得。 ... [详细]
  • 通过Web界面管理Linux日志的解决方案
    本指南介绍了一种利用rsyslog、MariaDB和LogAnalyzer搭建集中式日志管理平台的方法,使用户可以通过Web界面查看和分析Linux系统的日志记录。此方案不仅适用于服务器环境,还提供了详细的步骤来确保系统的稳定性和安全性。 ... [详细]
  • 本文详细探讨了 Django 的 ORM(对象关系映射)机制,重点介绍了其如何通过 Python 元类技术实现数据库表与 Python 类的映射。此外,文章还分析了 Django 中各种字段类型的继承结构及其与数据库数据类型的对应关系。 ... [详细]
  • 本文详细介绍如何在王者荣耀中设置公屏打字,包括半屏键盘的配置方法和常见问题解决技巧。 ... [详细]
  • 探讨了在有序数列中实现多种查询和修改操作的高效数据结构设计,主要使用线段树与平衡树(Treap)结合的方法。 ... [详细]
  • 深入理解T-SQL中的NULL与三值逻辑
    本文探讨了SQL Server中的三值逻辑,解释了谓词计算结果为TRUE、FALSE和UNKNOWN的规则。通过具体示例,详细说明了如何正确处理NULL值,并探讨了在不同约束条件下的行为。 ... [详细]
  • 创建项目:Visual Studio Online 入门指南
    本文介绍如何使用微软的 Visual Studio Online(VSO)创建和管理开发项目。作为一款基于云计算的开发平台,VSO 提供了丰富的工具和服务,简化了项目的配置和部署流程。 ... [详细]
  • Redis Hash 数据结构详解
    本文详细介绍了 Redis 中的 Hash 数据类型及其常用命令。Hash 类型用于存储键值对集合,支持多种操作如插入、查询、更新和删除字段值。此外,文章还探讨了 Hash 类型在实际业务场景中的应用,并提供了优化建议。 ... [详细]
  • 解决U盘安装系统后无法重启的问题
    本文详细探讨了运维新手常遇到的U盘安装系统后无法正常重启的问题,提供了从问题分析到具体解决方案的完整步骤。通过理解Boot Loader的工作原理和正确配置启动项,帮助用户顺利解决问题。 ... [详细]
  • FinOps 与 Serverless 的结合:破解云成本难题
    本文探讨了如何通过 FinOps 实践优化 Serverless 应用的成本管理,提出了首个 Serverless 函数总成本估计模型,并分享了多种有效的成本优化策略。 ... [详细]
author-avatar
叫爸算了_459
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有