精华内容
下载资源
问答
  • xamarin学习笔记A12(安卓Notification),当一个应用程序不在前台运行而在后台运行时,这时有个消息希望让用户知道,那么可以在状态栏显示一个消息图标
  • 安卓notification flag 的一些参数 FLAG_SHOW_LIGHTS //控制闪光 FLAG_ONGOING_EVENT //将flag设置为这个属性那么通知就会像QQ一样一直在状态栏显示 FLAG_INSISTENT //重复发出声音,直到用户响应此通知 FLAG_ONLY_...

    个人随笔:

    安卓notification flag 的一些参数

    FLAG_SHOW_LIGHTS //控制闪光

    FLAG_ONGOING_EVENT //将flag设置为这个属性那么通知就会像QQ一样一直在状态栏显示

    FLAG_INSISTENT //重复发出声音,直到用户响应此通知

    FLAG_ONLY_ALERT_ONCE //标记声音或者震动一次

    FLAG_AUTO_CANCEL //在通知栏上点击此通知后自动清除此通知

    FLAG_NO_CLEAR //将flag设置为这个属性那么通知栏的那个清楚按钮就不会出现

    FLAG_FOREGROUND_SERVICE //前台服务标记

    https://www.cnblogs.com/lipeil/archive/2012/10/15/2723759.html转载

    展开全文
  • 安卓 Notification 使用方法小结

    万次阅读 多人点赞 2016-02-24 17:59:03
    本文简单介绍安卓 Notification 的用法,并简单对比 5.0 前后 Notification 的变化和处理方法。

    本文简单介绍安卓 Notification 的用法,并简单对比 5.0 前后 Notification 的变化和处理方法。

    1. Notification 效果举例

    以微信为例,我们看下 Notification 的效果图:

    微信后台接收到消息时就会通过 Notification 来通知用户

    2. 常用方法及作用

    Notification 通常可以分为2个部分:Status Bar 中的部分和下拉通知栏后显示的部分。各个部分的名称如下图:

    20160120204444199

    需要说明的是,下拉后的部分的布局是系统默认的,该布局可以通过 contentView 字段自定义设置。如天猫 APP 就使用了自定义布局如下图(Nexus 5X,Tmall V4.7.2):

    20160122121323344

    20160122121337811

    我们用一段代码来说明图中上述项如何进行设置:

    
    import android.app.Notification;
    import android.app.NotificationManager;
    import android.app.PendingIntent;
    import android.content.Context;
    import android.content.Intent;
    import android.graphics.Bitmap;
    import android.graphics.drawable.BitmapDrawable;
    import android.net.Uri;
    import android.support.v4.app.NotificationCompat;
    import android.support.v7.app.AppCompatActivity;
    import android.os.Bundle;
    import android.view.View;
    import android.widget.Button;
    
    import com.example.cmm.helloworld.R;
    
    public class NotificationActivityDemo extends AppCompatActivity {
    
        public final static int NOTIFICATION_ID = "NotificationActivityDemo".hashCode();
    
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_notification_activity_demo);
    
            final NotificationManager nm = (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE);
            NotificationCompat.Builder builder = new NotificationCompat.Builder(this);
    
            // params
            int smallIconId = R.drawable.small_icon;
            Bitmap largeIcon = ((BitmapDrawable) getResources().getDrawable(R.drawable.large_icon)).getBitmap();
            String info = "逢赌必输:我是通知内容";
    
            // action when clicked
            Intent intent = new Intent();
            intent.setAction(Intent.ACTION_VIEW);
            intent.setData(Uri.parse("host://anotheractivity"));
    
            builder.setLargeIcon(largeIcon)
                    .setSmallIcon(smallIconId)
                    .setContentTitle("逢赌必输")
                    .setContentText(info)
                    .setTicker(info)
                    .setContentIntent(PendingIntent.getActivity(this, 0, intent, 0));
    
            final Notification n = builder.getNotification();
    
            Button btn = (Button) findViewById(R.id.btn);
            btn.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View v) {
                    nm.notify(NOTIFICATION_ID, n);
                }
            });
    
        }
    }

    3. 5.0 后的变化

    以上部分的内容是基于 4.4 及以下版本的 SDK。

    5.0 及以上版本的 Notification 样式发生了改变,我们先来看个例子,直观感受一下。

    下图为 24px x 24px 大小的 SmallIcon,我们可以看到其颜色艳丽精细,明显有悖 SmallIcon 简洁明了的精神:

    20160121091319151

    在 4.1 和 5.0 的 Genymotion 模拟器上的效果图对比如下(很明显 5.0 上 SmallIcon 白成一坨了,完全无法辨别):

    4.1 系统运行效果 5.0 系统运行效果
    20160121091517888 20160121091529325


    Notification 在 5.0及以上版本上的样式发生了变化,包括但不仅限于以下各项:

    • 背景色,由黑色变为白色;
    • smallIcon 的显示位置,由布局的右下角变为 largeIcon 的右下角,不过不设置 largeIcon,则系统会使用圆形灰色背景+SmallIcon构成largeIcon,且其右下角没有 SmallIcon,具体效果见下图;
    • smallIcon 的显示方式,不再按原图显示,而只显示白色和透明色,且不再显示 ticker(提示文本);
    • 如果不设置 largeIcon,则用 smallIcon 代替之,而且大图用灰色的圆包围 smallIcon 构成;

    20160120204604293

    5.0 及以上的系统,Google 推荐 SmallIcon 仅使用白色和透明色两种颜色,而且尽量简单。如果使用其他颜色,系统会进行处理,仅仅显示上述两种颜色,从而导致图标变为白色的一坨,而无法辨别。

    安卓 5.0(>= 4.0 同样适用) 及以上版本系统对通知图标的规则:

    尺寸颜色
    SmallIcon LargeIcon 小图标和操作图标应该避免过于精细、难以辨认,应该是纯白透明背景图像;禁止对小图标设置任何附加的阿尔法通道属性(变暗或变淡);这些图标会有抗锯齿边缘,但是由于 Android 使用这些图标作为蒙板(即仅使用阿尔法通道),因此通常应以完全不透明的方式绘制图像
    24dp x 24dp,上下左右各有 2dp 的留白:

    22 × 22 area in 24 × 24 (mdpi) 33 × 33 area in 36 × 36 (hdpi) 44 × 44 area in 48 × 48 (xhdpi) 66 × 66 area in 72 × 72 (xxhdpi) 88 × 88 area in 96 × 96 (xxxhdpi)
    64dp x 64dp:

    64 x 64 px(mdpi) 96 x 96 px (hdpi) 128 x 128 px (xhdpi) 192 x 192 px (xxhdpi) 256 x 256 px (xxxhdpi) 更多尺寸参考 该网页

    在5.0及以上系统,微信、大众点评、淘宝的 SmallIcon 如下图所示:

    20160120204654528

    所以,我们要对 5.0 及以上版本做兼容性处理,代码类似:

    // more code
    
    boolean isAboveLollipop = Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP;
    
    builder.setSmallIcon(isAboveLollipop ? R.drawable.small_icon : R.drawable.white_small_icon);
    
    // more code
    

    4. 结束语

    本文简单介绍了 Notification 常用的 API 及在 5.0 及以上版本的变化。在实际开发中,我们要对 5.0 及以上系统做兼容性处理,也就是制作两套 SmallIcon。

    展开全文
  • 安卓Notification详解

    千次阅读 2018-08-06 09:40:26
    Notification.Builder builder1 = new Notification.Builder(MainActivity.this); //实例化通知栏构造器Notification.Builder builder1.setSmallIcon(R.drawable.advise2); //设置图标 builder1.setTicker("...
       Notification.Builder builder1 = new  Notification.Builder(MainActivity.this);
       //实例化通知栏构造器Notification.Builder
        builder1.setSmallIcon(R.drawable.advise2); //设置图标
        builder1.setTicker("显示第二个通知"); 
    //设置通知首次出现在通知栏显示的内容,例如:您有一条短信请查收。
           builder1.setContentTitle("通知"); //设置标题
           builder1.setContentText("点击查看详细内容"); 
    //设置接收消息后,将状态栏下拉后的消息内容
         builder1.setWhen(System.currentTimeMillis()); //发送时间         
    
    builder1.setDefaults(Notification.DEFAULT_ALL); 
    //设置默认的提示音,振动方式,灯光
       
       builder1.setAutoCancel(true);//打开程序后图标消失I
       Intent intent =new Intent (MainActivity.this,Center.class);
    //设置意图,这里是跳转到一个界面。
       PendingIntent pendingIntent    =PendingIntent.getActivity(MainActivity.this, 0, intent, 0);
      builder1.setContentIntent(pendingIntent);//设置你点击消息后的意图
     Notification notification1 = builder1.build();//得到一个 notification
          NotificationManager Manager=(NotificationManager)this.
         getSystemService(Context.NOTIFICATION_SERVICE)
          //获取通知栏管理者
         Manager.notify(124, notification1); // 通过通知管理器发送通知

    1.实例化通知栏之后通过给他添加.flags属性赋值。

    1. Notification notification = mBuilder.build();  
    2. notification.flags = Notification.FLAG_AUTO_CANCEL;  

    2.通过setContentIntent(PendingIntent intent)方法中的意图设置对应的flags

    1. public PendingIntent getDefalutIntent(int flags){  
    2.     PendingIntent pendingIntent= PendingIntent.
    3.     getActivity(this1new Intent(), flags);  
    4.     return pendingIntent;  

     

    提醒标志符成员:

    Notification.FLAG_SHOW_LIGHTS//三色灯提醒,在使用三色灯提醒时候必须加该标志符

    Notification.FLAG_ONGOING_EVENT          //发起正在运行事件(活动中)

    Notification.FLAG_INSISTENT   

    //让声音、振动无限循环,直到用户响应 (取消或者打开)

    Notification.FLAG_ONLY_ALERT_ONCE  //发起Notification后,铃声和震动均只执行一次

    Notification.FLAG_AUTO_CANCEL      //用户单击通知后自动消失

    Notification.FLAG_NO_CLEAR          //只有全部清除时,Notification才会清除 ,不清楚该通知(QQ的通知无法清除,就是用的这个)

    Notification.FLAG_FOREGROUND_SERVICE    //表示正在运行的服务

    3)方法    setDefaults(int defaults)    

    (NotificationCompat.Builder中的方法,用于提示)

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

    Notification.DEFAULT_SOUND    // 添加默认声音提醒

    Notification.DEFAULT_LIGHTS// 添加默认三色灯提醒

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

    1. 方法:setVibrate(long[] pattern)
    1. .setVibrate(new long[] {0,300,500,700});  

    实现效果:延迟0ms,然后振动300ms,在延迟500ms,接着在振动700ms。

    学习网站:

    http://blog.csdn.net/yczz/article/details/28416893

    展开全文
  • 安卓notification不显示

    2020-11-28 17:26:28
    Android Notification 不显示问题。 问题描述: 最近学到了Notification,所以做来了个notification的project代码如下: public class MainActivity extends AppCompatActivity implements View.OnClickListener { ...

    项目场景:

    Android Notification 不显示问题。

    问题描述:

    最近学到了Notification,所以做来了个notification的project代码如下:

    public class MainActivity extends AppCompatActivity implements View.OnClickListener {
        Context mContext;
        NotificationManager manager ;
        Bitmap largeBitmap;
        public final int NOTIFID=1;
    
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main);
            mContext=MainActivity.this;
            largeBitmap = BitmapFactory.decodeResource(getResources(),R.mipmap.ic_notification_pikachu_big);
            manager=(NotificationManager) getSystemService(NOTIFICATION_SERVICE);
            bindView();
        }
    
        private void bindView() {
            Button bt_main_start=findViewById(R.id.bt_main_start);
            Button bt_main_cancel=findViewById(R.id.bt_main_cancel);
            bt_main_start.setOnClickListener(this);
            bt_main_cancel.setOnClickListener(this);
        }
    
        @RequiresApi(api = Build.VERSION_CODES.O)
        @Override
        public void onClick(View v) {
            switch (v.getId()){
                case R.id.bt_main_start:
                    Intent it=new Intent(mContext,OtherActivity.class);
                    PendingIntent pit=PendingIntent.getActivity(mContext,0,it,0);
                    Notification.Builder builder=new Notification.Builder(this);
                    builder.setContentTitle("皮卡丘")
                            .setContentText("快使用十万伏特")
                            .setSubText("皮卡皮卡")
                            .setTicker("皮卡丘爱心发电")
                            .setSmallIcon(R.mipmap.ic_notification_pikachu_small)
                            .setContentIntent(pit)
                            .setLargeIcon(largeBitmap)
                            .setWhen(System.currentTimeMillis())
                            .setAutoCancel(true);
                    Notification notify1= builder.build();
                    manager.notify(NOTIFID,notify1);
                    break;
    
                case R.id.bt_main_cancel:
                manager.cancel(NOTIFID);
                break;
            }
        }
    }
    

    结果当运行的时候,当点击按钮的时候,死活不显示notification,开始以为是没获取权限,结果发现获取了权限,所以在网上找了下解决方案。

    解决方案:

    原来在API26开始,设置notification就必须带有channel了,不然会报错。所以当增加了channel以后,问题完美解决。
    代码如下:(只贴了修改的地方)

    String id="channelId"
    String name="channelName";
    NotificationChannel channel=new NotificationChannel(id,name,NotificationManager.IMPORTANCE_HIGH);
    Notification.Builder builder=new Notification.Builder(this);
    builder.setContentTitle("皮卡丘")
           .setContentText("快使用十万伏特")
           .setChannelId(id)
           .setSubText("皮卡皮卡")
           .setTicker("皮卡丘爱心发电")
           .setSmallIcon(R.mipmap.ic_notification_pikachu_small)
           .setContentIntent(pit)
           .setLargeIcon(largeBitmap)
           .setWhen(System.currentTimeMillis())
           .setAutoCancel(true);
    Notification notify1= builder.build();
    manager.createNotificationChannel(channel);
    manager.notify(NOTIFID,notify1);
    

    主要看修改的地方就行,大概步骤就是:

    1. 设置字符串channel ID 和字符串 channel Name
    2. 然后创建NotificationChannle 类,并且参数为id和name
    3. 然后在builder设置的时候,添加上setChannelId
    4. 最后manager.createNotificationChannel()就行了。

    结语

    最后:写这篇log,记录下错误,下次不要再犯了。

    世界上只有一种真正的英雄主义,那就是看清了生命的真相,并且仍然热爱它。

    展开全文
  • 全栈工程师开发手册 (作者:栾鹏) 安卓教程全解 安卓通知栏是提醒用户信息有效...创建通知栏有使用Notification直接创建何使用Notification.Builder创建两种方法 1、使用Notification直接创建通知栏 private
  • context.getSystemService(Context.NOTIFICATION_SERVICE) as NotificationManager val id = "channel_01" val name = "channel_name" if (notifyManager == null) { notifyManager = context....
  • 安卓应用中经常看到比如一连接网络 某个应用就在状态栏上更新一些信息 今天就花了大概1小时吧,表示这个简单就学了- - 开始一直在看contentprovider,挺简单的也就继承几个方法。(觉得需要挺多时间,就看了大概一...
  • 安卓Notification,使用最新API。
  • 安卓 notification2

    2014-10-03 09:23:27
    在通知使用震动之前千万记得去添加权限直接使用这一个就好了要将声音直接根据下面的目录写下面直接使用自定义的通知看代码 转载于:https://blog.51cto.com/marvinkane/1560439...
  • Notification —— 通知,是一种让你的应用程序在不使用Activity的情况下警示用户。它是看不见的程序组件(Broadcast Receiver,Service和不活跃的Activity)警示用户有需要注意的事件发生的最好途径。 Notification ...
  • 安卓 Notification的使用

    2015-03-04 10:01:24
    主要涉及4个API —— Intent, PendingIntent, Notification,NotificationManager. 其中Intent 用来启动意图 PendingIntent用来延时启动意图,就是说它不会像Intent那样,app启动后立刻执行,而是现在状态栏中存...
  • 安卓Notification小总结

    2016-11-30 14:05:35
    Manifest设置: ... ... android:name=".... Notification notification = builder.build(); // 参数一:tag.不同的tag对应不同的notification,这样一个app可以弹出多个通知. nm.notify(i, notification); }
  • Notification notification = new Notification(icon, message, when); //这里还需要程序的名字 程序名字一般在res/values/strings.xml文件里 String title = context.getString(R.string.app_name); //无参数...
  • 通知的常见应用模式 A1.普通通知的发送流程 ... // 获取通知服务对象NotificationManager ... NotificationManager notiManager = (NotificationManager) ... getSystemService(mContext.NOTIFICATION_SER...
  • NotificationManager notificationManager = (NotificationManager)getSystemService(MainActivity.this.NOTIFICATION_SERVICE); Notification notification1; Bitmap Larg...
  • 1.MainActivity.java中关键...Notification notification=new Notification(R.drawable.notee, "this is notification", System.currentTimeMillis()); Intent intent2=new Intent(MainActivity.this,SecondActivi
  • 为何无法显示通知(关于安卓的一个默认设定) 重点:setsmallIcon方法 设置通知栏小图标,这个方法是必须的,否则无法成功创建合法的notification实例,切记! 如何显示完整的通知消息(较长的通知消息) 重点:...
  • 在使用自定义notification时候,remoteView.setTextViewText()方法时,需要给textview设置一个color或者主题,因为默认颜色白色跟背景一样。 Notification.Builder builder = new Notification.Builder(this) .set...
  • 安卓Notification(通知)所有属性

    千次阅读 2018-03-22 15:21:16
    另外,还需要为Notification设置flags为Notification.FLAG_SHOW_LIGHTS才支持三色灯提醒! setSound(Uri):设置接收到通知时的铃声,可以用系统的,也可以自己设置,例子如下: .setDefaults(Notification.DEFAULT_...
  • Notification.FLAG_NO_CLEAR //只有全部清除时,Notification才会清除 ,不清楚该通知(QQ的通知无法清除,就是用的这个) Notification.FLAG_FOREGROUND_SERVICE //表示正在运行的服务   3....
  • 我们点击某个notification进入到Activity中,当前Activity正在执行某些事件时,这时候走onCreate()的话状态则得不到保存。解决方法是: 在AndroidManifest.xml文件中该Activity下添加这样一句:Android:launchMode=...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 504
精华内容 201
关键字:

安卓notification