Android Notification使用方法总结

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调用。这样可以达到进入程序后,通知自动取消的效果
}

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

(0)

相关推荐

  • 详解Android中Glide与CircleImageView加载圆形图片的问题

    最近在项目中遇到了一个奇怪的问题,Glide和CircleImageView一起使用加载圆形头像,发现第一次死活都加载出来,出来的是一张占位图,当你刷新的时候或者第二次进入的时候才能加载出来.究其原因,CircleImageView 把位置占了.这时候我们有如下4种解决方案,不管是哪一种都是可以解决的(亲测可行). 1. 不使用占位符 注释掉这两句代码即可. .placeholder(R.drawable.normal_photo) .error(R.drawable.normal_photo)

  • 详解Android使用@hide的API的方法

    详解Android使用@hide的API的方法 今天早上想修改MediaPlaybackService.Java(/packages/apps/Music)的代码. 将AudioManager.STREAM_MUSIC改成AudioManager.STREAM_TTS. 发现AudioSystem.java(/frameworks/base.media/java/Android/media) /* @hide The audio stream for text to speech (TTS) *

  • Android 实现无网络页面切换的示例代码

    本文介绍了Android 实现无网络页面切换的示例代码,分享给大家,具体如下: 实现思路 需求是在无网络的时候显示特定的页面,想到要替换页面的地方,大多都是recyclerview或者第三方recyclerview这种需要显示数据的地方,因此决定替换掉页面中所有的recyclerview为无网络页面 实现过程 1 在BaseActivity中,当加载布局成功以后,通过id找到要替换的view,通过indexOfChild()方法,找到要替换的view的位置,再通过remove和add view来

  • Android编程自定义进度条颜色的方法详解

    本文实例讲述了Android编程自定义进度条颜色的方法.分享给大家供大家参考,具体如下: 先看效果图: 老是提些各种需求问题,我觉得系统默认的颜色挺好的,但是Pk不过,谁叫我们不是需求人员呢,改吧! 这个没法了只能看源码了,还好下载了源码, sources\base\core\res\res\ 下应有尽有,修改进度条颜色只能找progress ,因为是改变样式,首先找styles.xml 找到xml后,进去找到: <style name="Widget.ProgressBar"&

  • Android编程之绘图canvas基本用法示例

    本文实例讲述了Android编程之绘图canvas基本用法.分享给大家供大家参考,具体如下: MainActivity的代码如下: package example.com.myapplication; import android.os.Bundle; import android.app.Activity; public class MainActivity extends Activity { @Override protected void onCreate(Bundle savedIns

  • Android 中 onSaveInstanceState()使用方法详解

    Android 中 onSaveInstanceState()使用方法详解 覆盖onSaveInstanceState方法,并在onCreate中检测savedInstanceState和获取保存的值 @Override protected void onSaveInstanceState(Bundle outState) { outState.putInt("currentposition", videoView.getCurrentPosition()); super.onSave

  • Android Notification使用方法总结

    Android Notification使用方法总结 一. 基本使用 1.构造notification NotificationCompat.Builder mBuilder = new NotificationCompat.Builder(appContext) .setSmallIcon(appContext.getApplicationInfo().icon) .setWhen(System.currentTimeMillis()) .setAutoCancel(true)//当点击通知的

  • Android Notification 使用方法详解

    Android Notification 使用方法详解 用TaskStackBuilder来获取PendingIntent处理点击跳转到别的Activity,首先是用一般的PendingIntent来进行跳转. mBuilder = new NotificationCompat.Builder(this).setContent(view) .setSmallIcon(R.drawable.icon).setTicker("新资讯") .setWhen(System.currentTim

  • Android Notification使用方法详解

    Android  Notification使用详解 Notification 核心代码(链式调用):适用于Android 4.0以上(不兼容低版本) Notification noti = new Notification.Builder(this) .setContentTitle("标题名称") .setContentText("标题里的内容") .setSmallIcon(R.drawable.new_mail) .setLargeIcon(BitmapFac

  • Android  Notification使用方法详解

    Android  Notification使用详解 Notification 核心代码(链式调用):适用于Android 4.0以上(不兼容低版本) Notification noti = new Notification.Builder(this) .setContentTitle("标题名称") .setContentText("标题里的内容") .setSmallIcon(R.drawable.new_mail) .setLargeIcon(BitmapFac

  • Android编程实现拦截短信并屏蔽系统Notification的方法

    本文实例讲述了Android编程实现拦截短信并屏蔽系统Notification的方法.分享给大家供大家参考,具体如下: 拦截短信有几个关键点: 1.android接收短信时是以广播的方式 2.程序只要在自己的Manifest.xml里加有"接收"SMS的权限 <uses-permission android:name="android.permission.RECEIVE_SMS"> </uses-permission> <uses-p

  • Android Notification.Builder通知案例分享

    随着Android系统的不断升级,相关Notification的用法有很多种,有的方法可能已经被android抛弃了,下面为大家分享一下个人如何实现Android Notification通知小案例源代码,供大家参考. Android Notification.Builder通知小案例,具体代码示例如下: package com.example.day6ke; import android.app.Notification; import android.app.NotificationMana

  • Android Notification的多种用法总结

    Android Notification的多种用法总结 我们在用手机的时候,如果来了短信,而我们没有点击查看的话,是不是在手机的最上边的状态栏里有一个短信的小图标提示啊?你是不是也想实现这种功能呢?今天的Notification就是解决这个问题的. 我们也知道Android系统也是在不断升级的,有关Notification的用法也就有很多种,有的方法已经被android抛弃了,现在我实现了三种不同的方法,并适应不同的android版本.现在我就把代码公布出来,我喜欢把解释写在代码中,在这里我就不

  • Android Notification实现动态显示通话时间

    基于android N MTK释放的源码,供大家参考,具体内容如下 本文主要讲解如何在 IncallUI 的notification 上面不停地更新显示当前已通话多长时间,从而达到和incallUI通话界面上的通话时间一致. 主要思路 1.我们需要知道通话建立时的时间,即call 的状态从 INCOMING或者DIALING 转变成ACTIVE的时候 2.时间每秒钟都会发生变化,所以我们就需要不停的更新notification的界面,我们这里是不停的创建和notify同一个notificatio

  • Android Notification使用教程详解

    目录 前言 正文 一.Android中通知的变化 1. Android 4.1,API 16 2. Android 4.4,API 19 和 20 3. Android 5.0,API 21 4. Android 7.0,API 24 5. Android 8.0,API 26 6. Android 12.0,API 31 二.创建项目 三.显示通知 ① 创建通知渠道 ② 初始化通知 ③ 显示通知 四.通知点击 ① 创建目的Activity ② PendingIntent使用 五.折叠通知 ①

  • Android HandlerThread使用方法详解

    Android HandlerThread使用方法详解 HandlerThread 继承自Thread,内部封装了Looper. 首先Handler和HandlerThread的主要区别是:Handler与Activity在同一个线程中,HandlerThread与Activity不在同一个线程,而是别外新的线程中(Handler中不能做耗时的操作). 用法: import android.app.Activity; import android.os.Bundle; import androi

随机推荐