精华内容
下载资源
问答
  • 实现 Notification 的方法1.获取 NotificationManager 实例管理通知2.实例化 Notification 对象,构造通知内容3.Intent 事件跳转管理4.通过 NotificationManager 发送通知这里我们把通知分为以下几种类型:1.普通...

    实现 Notification 的方法

    1.获取 NotificationManager 实例管理通知

    2.实例化 Notification 对象,构造通知内容

    3.Intent 事件跳转管理

    4.通过 NotificationManager 发送通知

    这里我们把通知分为以下几种类型:

    1.普通通知

    2.悬停通知

    3.折叠通知

    4.带Tag标识的通知

    构造通知首先需要获得 NotificationManager 实例,通过它来管理通知和发送通知。NotificationManager mNotiManager = (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE);

    1、普通通知

    创建NotificationCompat.Builder 对象NotificationCompat.Builder builder = new NotificationCompat.Builder(mContext, channelId);orNotificationCompat.Builder builder = new NotificationCompat.Builder(context);

    这两种实现方式第二种系统已经提示已过时,建议使用第一种方式

    这里channelId是为了适配Android O,会涉及到NotificationChannel

    NotificationChannel是Android O新增的特性,为了兼容老代码,如果channelId为null的话,Android O会把通知归到“Other Channel”上。需要注意的是如果将targetSdkVersion提到26以上的话,就必须设置channel了,不能为null。

    这边先设置channelId 具体NotificationChannel 之后会用法介绍

    接下来先进行创建Notification 的一些基本设置:builder.setContentTitle("this is common notification title")

    .setContentText("this is common notification content text")

    .setDefaults(Notification.DEFAULT_ALL)

    .setSmallIcon(R.mipmap.ic_launcher_round)

    .setLargeIcon(BitmapFactory.decodeResource(mContext.getResources(), R.mipmap.ic_launcher))

    .setWhen(System.currentTimeMillis())

    .setAutoCancel(true)

    .setVisibility(NotificationCompat.VISIBILITY_PRIVATE)

    .setVibrate(new long[]{100, 200, 300, 400})

    .setPriority(NotificationCompat.PRIORITY_DEFAULT)

    .setLights(Color.YELLOW, 300, 0);

    Intent skipIntent = new Intent(mContext, MainActivity.class);

    PendingIntent pendingIntent = PendingIntent.getActivity(mContext, notificationId,

    skipIntent, PendingIntent.FLAG_UPDATE_CURRENT);

    builder.setContentIntent(pendingIntent);

    以上设置了一些方法,具体有哪些作用,我们一一分析一下:setContentTitle  设置通知标题

    setContentText  设置通知内容

    setDefaults  打开呼吸灯,声音,震动,触发系统默认行为

    DEFAULT_VIBRATE  添加默认震动提醒  需要VIBRATE permission

    DEFAULT_SOUND  添加默认声音提醒

    DEFAULT_LIGHTS  添加默认三色灯提醒

    DEFAULT_ALL  添加默认以上3种全部提醒

    setSmallIcon  设置通知的小图标,只能使用纯 alpha 图层的图片进行设置,小图标会显示在系统状态栏上

    setLargeIcon  设置通知图标,在下拉通知显示

    setWhen  设置通知时间,默认为系统发出通知的时间,通常可以不用设置

    setAutoCancel 设置点击通知后清除

    setVisibility  android5.0加入了一种新的模式Notification的显示等级,共有三种           1.VISIBILITY_PRIVATE : 显示基本信息,如通知的图标,但隐藏通知的全部内容;           2.VISIBILITY_PUBLIC : 显示通知的全部内容;           3.VISIBILITY_SECRET : 不显示任何内容,包括图标。

    setVibrate 设置震动,需要配置权限(android.permission.VIBRATE)setPriority  setPriority() 方法共有5个等级:

    1. PRIORITY_MIN - 最低级别(-2)

    2. PRIORITY_LOW - 较低级别(-1)

    3. PRIORITY_DEFAULT - 默认级别(0)

    4. PRIORITY_HIGH - 较高级别(1)

    5. PRIORITY_MAX - 最高级别(2) 当发出此类型的通知时,通知会以悬挂的方法显示在屏幕上

    setLights  设置呼吸灯颜色,一般三种颜色:红,绿,蓝

    PendingIntent  用与处理通知的交互事件(也就是点击事件)。PendingIntent表示的是一个待定的意图。

    可以用于开启一个Activity,Service或广播接收者,它是对Intent的包装。对外部提供这个Intent.通知被点击时系统会按照PendingIntent设置的方法及Intent设置的目标去开启对应的Activity,Service或广播接收者

    PendingIntent 主要可以通过以下三种方式获取://获取一个用于启动 Activity 的 PendingIntent 对象public static PendingIntent getActivity(Context context, int requestCode, Intent intent, int flags);//获取一个用于启动 Service 的 PendingIntent 对象public static PendingIntent getService(Context context, int requestCode, Intent intent, int flags);//获取一个用于向 BroadcastReceiver 广播的 PendingIntent 对象public static PendingIntent getBroadcast(Context context, int requestCode, Intent intent, int flags)setContentIntent  设置通知事件交互

    发送通知Notification notification = builder.build();

    mNotiManager.notify(notificationId, notification);

    悬停通知

    通知到达的时候会在状态栏上方直接显示通知builder.setTicker(content);builder.setFullScreenIntent(pendingIntent, true);setTicker  首次收到的时候,在状态栏中,图标的右侧显示的文字(设置之后可以显示悬停通知)setFullScreenIntent  在5.0以上可以悬停之后可以正常收起,6.0以上会一直停留知道用户手动操作消失

    设置悬停主要是以上两个方式,其他配置可以参考普通通知配置方式。

    折叠通知

    折叠通知需要通过** RemoteViews**来实现RemoteViews collapsed = new RemoteViews(mContext.getPackageName(), R.layout.notify_collapsed);

    RemoteViews show = new RemoteViews(mContext.getPackageName(), R.layout.notify_show);

    builder.setCustomContentView(collapsed);

    builder.setCustomBigContentView(show);

    builder.setCustomHeadsUpContentView(collapsed);

    以上设置几个参数分析:

    setCustomContentView 设置自定义通知视图(折叠状态视图)

    setCustomBigContentView 设置展开视图

    setCustomHeadsUpContentView 设置在悬停的时候需要显示的视图,如果不设置,默认显示CustomBigContentView

    设置Tag类型通知

    对一些通知可以做一些标签分类,我们可以给通知加上tag作为一个区分//发送通知mNotiManager.notify(notiTag, notificationId, notification);//取消通知,清除指定 TAG 和 ID 的通知mNotiManager.cancel(tag, notificationId);

    这两个方式需要成对出现,如果是通过NotificationManager.notify(String tag, int id, Notification notify) 方法创建的通知,那么只能通过 NotificationManager.cancel(String tag, int id) 方法才能清除对应的通知,调用NotificationManager.cancel(int id) 无效。

    取消通知

    取消通知主要有3个方式//通过id取消通知NotificationManager.cancel(int id);//通过tag和id取消通知NotificationManager.cancel(String tag, int id);//取消全部通知NotificationManager.cancelAll();

    Android O 新特性 NotificationChannel

    如果需要发送属于某个自定义渠道的通知,就需要在发送通知前创建自定义通知渠道

    创建NotificationChannelif (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {/**

    * channelId 全局必须是唯一的,并且长度不能太长

    * channelName 渠道名称,显示在通知栏列表

    *  importance 渠道重要等级,等级不同在手机桌面上的展示不同。需要注意的是代码中设置的渠* 道重要等级只是一个初始值,用户可以手动更改渠道的重要等级

    */

    NotificationChannel channel = new NotificationChannel(channelId, channelName,

    NotificationManager.IMPORTANCE_HIGH);

    channel.enableLights(true);

    channel.enableVibration(true);

    channel.setVibrationPattern(new long[]{100, 200, 300, 400});

    channel.setLockscreenVisibility(Notification.VISIBILITY_PRIVATE);

    notificationManager.createNotificationChannel(channel);

    }

    NotificationChannel 的方法列表:

    getId() —  获取 ChannleId

    enableLights() —  开启指示灯,如果设备有的话

    setLightColor() —  设置指示灯颜色

    enableVibration() —  开启震动

    setVibrationPattern() —  设置震动频率

    setImportance() —  设置频道重要性

    getImportance() —  获取频道重要性

    setSound() —  设置声音

    getSound() —  获取声音

    setGroup() —  设置 ChannleGroup

    getGroup() —  得到 ChannleGroup

    setBypassDnd() —  设置绕过免打扰模式

    canBypassDnd() —  检测是否绕过免打扰模式

    getName() —  获取名称

    setLockScreenVisibility() —  设置是否应在锁定屏幕上显示此频道的通知

    getLockscreenVisibility() —  检测是否应在锁定屏幕上显示此频道的通知

    setShowBadge() 设置是否显示角标

    canShowBadge() —  检测是否显示角标

    importance重要程度等级划分IMPORTANCE_DEFAULT = 3;  会在状态栏中显示,允许有声音提示,但不会弹窗,通知下拉栏会展示

    IMPORTANCE_HIGH = 4;  会弹窗提示,允许有提示音

    IMPORTANCE_LOW = 2;  会在状态栏中显示,但不会弹窗,通知下拉栏会展示

    IMPORTANCE_MAX = 5;   会弹窗提示,允许有提示音,可以使用全屏

    IMPORTANCE_MIN = 1;    不提示,在通知下拉栏会展示,但是是收起的

    IMPORTANCE_NONE = 0;  不提示,不展示

    删除NotificationChannelNotificationChannel mChannel = mNotificationManager.getNotificationChannel(id);

    mNotificationManager.deleteNotificationChannel(mChannel);

    作者:听话哥

    链接:https://www.jianshu.com/p/f48a88af6acd

    展开全文
  • Android Notification 使用方法详解用TaskStackBuilder来获取PendingIntent处理点击跳转到别的Activity,首先是用一般的PendingIntent来进行跳转。mBuilder = new NotificationCompat.Builder(this).setContent(view...

    Android Notification 使用方法详解

    用TaskStackBuilder来获取PendingIntent处理点击跳转到别的Activity,首先是用一般的PendingIntent来进行跳转。

    mBuilder = new NotificationCompat.Builder(this).setContent(view)

    .setSmallIcon(R.drawable.icon).setTicker("新资讯")

    .setWhen(System.currentTimeMillis())

    .setOngoing(false)

    .setAutoCancel(true);

    Intent intent = new Intent(this, NotificationShow.class);

    PendingIntent pendingIntent = PendingIntent.getActivity(this, 0,

    intent, PendingIntent.FLAG_UPDATE_CURRENT);

    mBuilder.setContentIntent(pendingIntent);

    直接用PendingIntent来跳转到NotificationShow,在运行效果上来看,首先发送了一条Notification到通知栏上,然后这时,我退出程序,即MainActivity已经不存在了,回到home主菜单,看到Notification仍然存在,当然,我们还没有点击或者cancel它,现在去点击Notification,跳转到NotificationShow界面,然后我们按下Back键,发现直接回到主界面了。现在大多数android应用都是在通知栏中如果有Notification通知的话,点击它,然后会直接跳转到对应的应用程序的某个界面,这时如果回退,即按下Back键,会返回到该应用程序的主界面,而不是系统的主界面。所以用上面这种PendingIntent的做法达不到目的。这里我们使用TaskStackBuilder来做。

    mBuilder = new NotificationCompat.Builder(this).setContent(view)

    .setSmallIcon(R.drawable.icon).setTicker("新资讯")

    .setWhen(System.currentTimeMillis())

    .setOngoing(false)

    .setAutoCancel(true);

    Intent intent = new Intent(this, NotificationShow.class);

    TaskStackBuilder stackBuilder = TaskStackBuilder.create(this);

    stackBuilder.addParentStack(NotificationShow.class);

    stackBuilder.addNextIntent(intent);

    PendingIntent pendingIntent = stackBuilder.getPendingIntent(0,

    PendingIntent.FLAG_UPDATE_CURRENT);

    // PendingIntent pendingIntent = PendingIntent.getActivity(this, 0,

    // intent, PendingIntent.FLAG_UPDATE_CURRENT);

    mBuilder.setContentIntent(pendingIntent);

    显示用TaskStackBuilder.create(this)一个stackBuilder实例,接下来addParentStack();关于这个方法,我们查一下官方API文档:Add the activity parent chain as specified by the parentActivityName attribute of the activity (or activity-alias) element in the application's manifest to the task stack builder. 这句话是说添加一个activity,与这个activity的manifest文件中的parentActivityName的属性相关联。

    那么我们就在manifest文件中添加这个属性

    android:name="com.shulf.notificationtest.NotificationShow"

    android:parentActivityName=".MainActivity" >

    让它的parentActivity为MainActivity,也就是说在NotificationShow这个界面点击回退时,会跳转到MainActivity这个界面,而不是像上面一样直接回到了程序的主菜单。运行一下,最后效果确实是这样。

    以上实用Android Notification的实例详解,如有疑问请留言或者到本站社区交流讨论,本站关于Android开发的文章还有很多,希望大家搜出查阅,感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!

    展开全文
  • Android Notification使用详解Notification核心代码(链式调用):适用于Android 4.0以上(不兼容低版本)Notification noti = new Notification.Builder(this).setContentTitle("标题名称").setContentText("标题里的...

    Android  Notification使用详解

    Notification

    核心代码(链式调用):适用于Android 4.0以上(不兼容低版本)

    Notification noti = new Notification.Builder(this)

    .setContentTitle("标题名称")

    .setContentText("标题里的内容")

    .setSmallIcon(R.drawable.new_mail)

    .setLargeIcon(BitmapFactory.decordResource(getResources(), R.drawable.ic_launcher))

    .build();

    NotificationManager nm = (NotificationManager) getSystemService(NOTIFICATION_SERVICE);

    nm.notify(0, noti);

    兼容版本

    Notification notification = new Notification(R.drawable.ic_launcher, "xxxxxx", System.currentTimeMillis());

    //点击事件真正想执行的动作

    Intent intent = new Intent();

    intent.setAction(Intent.ACTION_DIAL);

    intent.setData(Uri.parse("tel:110"));

    PendingIntent contentIntent = PendingIntent.getActivity(this, 0, intent, PendingIntent.FLAG_UPDATE_CURRENT);

    notification.setLatestEventInfo(this, "标题", "内容", contentIntent);

    NotificationManager nm = (NotificationManager) getSystemManager(NOTIFICATION_SERVICE);

    nm.notify(0, notification);

    感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!

    展开全文
  • I am making an Geo Fencing App with notifications in Android Studio. But I have the problem that the notifications are not showing up.It says that it has no small icon but I did include that in my cod...

    I am making an Geo Fencing App with notifications in Android Studio. But I have the problem that the notifications are not showing up.It says that it has no small icon but I did include that in my code.

    Error: 02-19 15:06:42.276 1260-1260/? E/NotificationService: Not

    posting notification without small icon: Notification(channel=null

    pri=2 contentView=null vibrate=[0] sound=null defaults=0x0 flags=0x91

    color=0x00000000 vis=PRIVATE) 02-19 15:06:42.276 1260-1260/?

    E/NotificationService: WARNING: In a future release this will crash

    the app: com.koo.lightmanager 02-19 15:06:42.277 1260-1260/?

    E/NotificationService: Error creating vibration waveform with pattern:

    [0]

    Code:

    private void sendNotification(String title, String content) {

    Notification.Builder builder = new Notification.Builder(this)

    .setSmallIcon(R.mipmap.ic_launcher_round)

    .setContentTitle(title)

    .setContentText(content);

    NotificationManager manager = (NotificationManager)this.getSystemService(Context.NOTIFICATION_SERVICE);

    Intent intent = new Intent(this,MapsActivity.class);

    PendingIntent contentIntent = PendingIntent.getActivity(this,0,intent,PendingIntent.FLAG_IMMUTABLE);

    builder.setContentIntent(contentIntent);

    Notification notification = builder.build();

    notification.flags |= Notification.FLAG_AUTO_CANCEL;

    notification.defaults |= Notification.DEFAULT_SOUND;

    manager.notify(new Random().nextInt(),notification);

    }

    展开全文
  • Android使用Notification并通过点击Notification重新启动Activity我们在使用别的软件的时候,经常会看到在手机的最头部有一个小图标,表示程序依然在启动着。比如一些音乐播放软件天天动听,还有服务程序正点工具...
  • AndroidNotification

    2021-05-26 16:29:59
    Notification在手机的运用中是很常见的,当我们收到一个短信时,就会在我们的通知栏显示一个消息的图标和简单信息用来提示我们,这种提示就是采用的Notification来实现的。它还有其它的形式,比如下载的进度条式提示...
  • 一、前言最近在崩溃上报中发现了如下错误,notification报出来的错误,由于这只是在部分机型上面报出来,自己测试了几种机型都没能复现,所以只有分析一下Notification的显示过程来看一下能不能找到问题的原因。...
  • 在消息通知的时候,我们经常用到两个控件Notification和Toast。特别是重要的和需要长时间显示的信息,用Notification最合适不过了。他可以在顶部显示一个图标以标示有了新的通知,当我们拉下通知栏的时候,可以看到...
  • Android Notification总结

    2021-06-11 16:41:29
    浮动通知的使用范例有:使用设备时来电,使用设备时闹铃,新的短信,电池电量过低 注意事项: 虽然Android 支持在通知底部显示可选的操作,但在使用这一功能时需要注意对操作进行筛选,一般,通知中应只包含最重要...
  • 关于Notification那些事,最近一直在弄这块,抽了点时间总结一下,做了一个Demo,废话不多说,先上图看效果通知.png通知2.png在Android 3.0 (API level 11)之前,使用new Notification()方式创建通知:String ...
  • 跟着谷歌的android fundamental tutorial作安卓通知部分时,在魅族flyme系统上并不显示我设置的通知icon,而是显示默认的应用启动图标。而且奇怪的是我设置的通知是等级最高的,系统给我折叠到了不重要的消息里面也...
  • 本文将根据个人经验对Notification做个总结,以供参考!什么是通知(Notification)通知是一个可以在应用程序正常的用户界面之外显示给用户的消息。通知发出时,它首先出现在状态栏的...在Android 5.0(API level 21)中...
  • 查看Notification权限public class NotificationUtils {public static boolean checkNotifySetting(Context context) {NotificationManagerCompat manager = NotificationManagerCompat.from(context);// ...
  • Android Notification通知

    2020-12-29 03:38:15
    Android官网通知通知是Android中经常使用的一个功能,本文记录以8.0版本为分割的通知使用方式,下图为通知栏各个位置的解释:Android官方对通知各个位置的解释.png一、通知使用1,普通通知注意:创建通知的时候,...
  • 有问题的写法: PendingIntent pIntent = PendingIntent.getBroadcast(context, 0, targetIntent, PendingIntent.FLAG_UPDATE_CURRENT); 注释里写的很清楚,param2是用来区分sender的,故每次都是0,每次都会被覆盖...
  • 本文实例讲述了android编程使用service实现notification定时发送功能。分享给大家供大家参考,具体如下:/*** 通过启动或停止服务来管理通知功能** @description:* @author ldm* @date 2016-4-29 上午9:15:15*/...
  • 当用户有没有接到的电话的时候,Android顶部状态栏里就会出现一个小图标。提示用户有没有处理的快讯,...如果要添加一个Notification,可以按照以下几个步骤1:获取NotificationManager:NotificationManagerm_Notific...
  • 本想自己写一个的,但是看到这篇之后,我想还是转过来吧,实在是非常的详细:在Android系统中,发一个状态栏通知还是很方便的。下面我们就来看一下,怎么发送状态栏通知,状态栏通知又有哪些参数可以设置?首先,...
  • android notification 无法发出声音解决办法 android小白,在学习第一行代码的时候发现程序无法发出通知,摸索了半天,查了很多资料,解决方法如下: if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) { ...
  • AndroidNotification使用

    千次阅读 2021-11-19 15:21:38
    这类服务主要用于一些需要用户能意识到它在后台运行并且随时可以操作的业务,如音乐播放器,设置为前台服务,使用一个Notification 显示在通知栏,可以使用户切歌或是暂停之类的。 前台服务与普通
  • Android也提供了用于处理这些信息的类,它们是Notification和NotificationManager。其中,Notification代表的是具有全局效果的通知,而NotificationManager则是用于发送Notification通知的系统服务。使用Notificat...
  • import android.app....import android.app.Notification;import android.app.NotificationManager;import android.app.PendingIntent;import android.content.Context;import android.content.Intent;import ...
  • @RequiresApi(api = Build.VERSION_CODES.N)public void showMediaNotification() {Log.i("zyq", "showMediaNotification...Notification.Builder mBuilder = new Notification.Builder(CordovaViewActivity.this);m...
  • Android Notification取消声音 取消弹出

    千次阅读 2021-11-24 11:14:53
    现在很多android项目都会用到service ,但是安卓8.0以后官方要求使用service时必须在其内部调用startForeground(id,Notification);方法否则会报ANR。该方法内需要一个Notification参数,如果不对它的参数进行设置,...
  • Notification是在你的应用常规界面之外展示的消息。当app让系统发送一个消息的时候,消息首先以图表的形式显示在通知栏。要查看消息的详情需要进入通知抽屉(notificationdrawer)中查看。通知栏和通知抽屉...
  • 1.id和name记得改 channel的id和name,如果是之前的notification的没有加声音和震动的话,最好改掉id和name,并且重新xie'za
  • 项目中加了个推的推送,需要根据消息透传获取数据自己生成通知,然后点击同种跳转到某个指定页面,这应该是是个比较常见的需求。 正常的实现: @Override public ... 至于个推的具体使用,参考官网文档就已经很详细了。
  • 本文实例讲述了Android实现为Notification加上一个进度条的方法。分享给大家供大家参考,具体如下:package com.notification;import android.app.Activity;import android.app.Notification;import android.app....
  • 最近时不时地有人问我这样或那样的通知如何实现,所以本文将根据个人经验对Notification做个总结,以供参考!什么是通知(Notification)通知是一个可以...作为安卓用户界面的重要组成部分,通知有自己的设计指南。在A...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 64,878
精华内容 25,951
关键字:

安卓notification使用