文档章节

通知 推送 Notification

猴亮屏
 猴亮屏
发布于 2017/07/13 15:07
字数 1581
阅读 7
收藏 0
点赞 0
评论 0

 public void sendNotification(Context ctx, String message) {
  // get the notification manager
  String str = Context.NOTIFICATION_SERVICE;
  NotificationManager nm = (NotificationManager) ctx.getSystemService(str);

  // create notification object includes icon ,text ,the time to send
  int icon = R.drawable.ic_launcher;
  CharSequence tickerText = "hello";
  long when = System.currentTimeMillis();// return the system current time
            // in milliseconds since 1970

  Notification notification = new Notification(icon, tickerText, when);

  // set contextView by using setLastestEventInfo
  Intent intent = new Intent(Intent.ACTION_VIEW);
  intent.setData(Uri.parse("http://www.google.com"));
  PendingIntent pi = PendingIntent.getActivity(ctx, 0, intent, 0);// explain
                  // it
                  // below
  notification.setLatestEventInfo(ctx, "title", "text", pi);

  // send notification
  nm.notify(1, notification);// 通知加入状态栏,标记为id=1
 }// above all is how to use Notification

 

个人水平有限,接触到的暂时是这么多,因此当我系统了解完了之后会对此做一个补充

Notification 的使用需要以上四个步骤。

简单的说PendingIntent.getActivity()就是即将发生的intent.

PendingIntent.getActivity(ctx,o,intent,o)官方文档是这样解释的:

public static PendingIntent getActivity (Context context, int requestCode, Intent intent, int flags)

Since: API Level 1

Retrieve a PendingIntent that will start a new activity, like calling Context.startActivity(Intent). Note that the activity will be started outside of the context of an existing activity, so you must use the Intent.FLAG_ACTIVITY_NEW_TASK launch flag in the Intent.

Parameters

context The Context in which this PendingIntent should start the activity.
requestCode Private request code for the sender (currently not used).  现在不使用了
intent Intent of the activity to be launched.
flags May be FLAG_ONE_SHOTFLAG_NO_CREATEFLAG_CANCEL_CURRENTFLAG_UPDATE_CURRENT, or any of the flags as supported byIntent.fillIn() to control which unspecified parts of the intent that can be supplied when the actual send happens.

Returns

  • Returns an existing or new PendingIntent matching the given parameters. May return null only if FLAG_NO_CREATE has been supplied.

 

一下摘自一个人的博客,只是比官方文档好理解点:  

  下面来谈谈notification,这个notification一般用在电话,短信,邮件,闹钟铃声,在手机的状态栏上就会出现一个小图标,提示用户处理这个快讯,这时手从上方滑动状态栏就可以展开并处理这个快讯。发现这个功能特别好用,所以我就根据我的理解来谈谈。摘自帮助文档 :  notification类表示一个持久的通知,将提交给用户使用NotificationManager。已添加的Notification.Builder,使其更容易构建通知。notification是一种让你的应用程序在没有开启情况下或在后台运行警示用户。它是看不见的程序组件(Broadcast Receiver,Service和不活跃的Activity)警示用户有需要注意的事件发生的最好途径。

    先来区分以下状态栏和状态条的区别:

    1、状态条就是手机屏幕最上方的一个条形状的区域;

          在状态条有好多信息量:比如usb连接图标,手机信号图标,电池电量图标,时间图标等等;

    2、状态栏就是手从状态条滑下来的可以伸缩的view;

          在状态栏中一般有两类(使用FLAG_标记):

          (1)正在进行的程序;

          (2)是通知事件;

 

     大概来描述创建一个Notification传送的信息有:

    1、一个状态条图标;

    2、在拉伸的状态栏窗口中显示带有大标题,小标题,图标的信息,并且有处理该点击事件:比如调用该程序的入口类;

    3、闪光,LED,或者震动;

 

      快速创建一个Notification的步骤简单可以分为以下四步:

      第一步:通过getSystemService()方法得到NotificationManager对象;

      第二步:对Notification的一些属性进行设置比如:内容,图标,标题,相应notification的动作进行处理等等;

      第三步:通过NotificationManager对象的notify()方法来执行一个notification的快讯;

      第四步:通过NotificationManager对象的cancel()方法来取消一个notificatioin的快讯;

 

     下面对Notification类中的一些常量,字段,方法简单介绍一下:

     常量:

        DEFAULT_ALL                  使用所有默认值,比如声音,震动,闪屏等等

        DEFAULT_LIGHTS            使用默认闪光提示

        DEFAULT_SOUNDS         使用默认提示声音

        DEFAULT_VIBRATE         使用默认手机震动

      【说明】:加入手机震动,一定要在manifest.xml中加入权限:

                         <uses-permission Android:name="android.permission.VIBRATE" />

        以上的效果常量可以叠加,即通过

                mNotifaction.defaults =DEFAULT_SOUND  |  DEFAULT_VIBRATE ; 

            或mNotifaction.defaults |=DEFAULT_SOUND   (最好在真机上测试,震动效果模拟器上没有)

 

        //设置flag位

           FLAG_AUTO_CANCEL          该通知能被状态栏的清除按钮给清除掉

       FLAG_NO_CLEAR                  该通知能被状态栏的清除按钮给清除掉

        FLAG_ONGOING_EVENT      通知放置在正在运行

        FLAG_INSISTENT                    是否一直进行,比如音乐一直播放,知道用户响应

 

      常用字段:

           contentIntent                  设置PendingIntent对象,点击时发送该Intent

           defaults                             添加默认效果

           flags                                  设置flag位,例如FLAG_NO_CLEAR等

          icon                                  设置图标

           sound                                设置声音

           tickerText                        显示在状态栏中的文字

          when                                发送此通知的时间戳

  

Notification.build构造Notification方法介绍:  

     void setLatestEventInfo(Context context , CharSequencecontentTitle,CharSequence  contentText,PendingIntent contentIntent)  

          

        功能: 显示在拉伸状态栏中的Notification属性,点击后将发送PendingIntent对象

        参数: context             上下文环境

                      contentTitle      状态栏中的大标题

                      contentText      状态栏中的小标题

                      contentIntent    点击后将发送PendingIntent对象

      说明:要是在Notification中加入图标,在状态栏和状态条中显示图标一定要用这个方法,否则报错!

 

      最后说一下NotificationManager类的常用方法:

             通过获取系统服务来获取该对象:           

                NotificationManager mNotificationManager = (NotificationManager)getSystemService(Context.NOTIFICATION_SERVICE) ;

 

      NotificationManager常用方法介绍:

               public  void cancelAll()                                                          移除所有通知 (只是针对当前Context下的Notification)

               public  void cancel(int id)                                                      移除标记为id的通知 (只是针对当前Context下的所有Notification)

               public  void notify(String tag ,int id, Notification notification) 将通知加入状态栏, 标签为tag,标记为id

               public  void notify(int id, Notification notification)                   将通知加入状态栏,,标记为id

首先,我感觉在实现中PendingIntent感觉就是Intent的包装。

它的三个实例化方法:

getActivity(Context, int, Intent, int)

getService(Context, int, Intent, int)

getBroadcast(Context, int, Intent, int)

感觉是保存当前的Activity的Context,然后在外部启动Intent动作。类似于代码Context.startActivity(*, *);

常和Notification和Alarm一起使用。

代码例子:

public class BannerActivity extends Activity {  

      

    private Button button;  

    private NotificationManager mNotificationManager;  

    private Intent intent;  

    private PendingIntent mPendingIntent;  

    private Notification mNotification;  

  

    /** Called when the activity is first created. */     

    @Override  

    public void onCreate(Bundle savedInstanceState) {  

        super.onCreate(savedInstanceState);  

        setContentView(R.layout.main);  

        mNotificationManager = (NotificationManager)getSystemService(Context.NOTIFICATION_SERVICE); 

          

        button = (Button)this.findViewById(R.id.b); 

          

        intent = new Intent(BannerActivity.this, BaseActivity.class); 

        mPendingIntent = PendingIntent.getActivity(BannerActivity.this, 0, intent, Intent.FLAG_ACTIVITY_BROUGHT_TO_FRONT); 

        mNotification = new Notification(); 

          

        button.setOnClickListener(new Button.OnClickListener() {  

              

            @Override  

            public void onClick(View v) {  

                // TODO Auto-generated method stub  

                mNotification.icon = R.drawable.ic_launcher;  

                mNotification.tickerText = "通知!"; //通知在通知栏出现的时候的标题  

                mNotification.defaults = Notification.DEFAULT_SOUND;   

                  

                // 第二个参数是打开通知栏后的标题, 第三个参数是通知内容  

                mNotification.setLatestEventInfo(BannerActivity.this, "通知?", "通知内容!", mPendingIntent); 

                mNotificationManager.notify(0, mNotification); 

            }  

        }); 

    }  

本文转载自:http://blog.csdn.net/joebaby_/article/details/7974094

共有 人打赏支持
猴亮屏

猴亮屏

粉丝 30
博文 512
码字总数 52840
作品 2
北京
Android工程师
Windows Phone 7 学习笔记 - 推送通知服务

大家都知道windows phone值允许一个第三方的应用程序在前台运行,所以应用程序就不能在后台从服务器上取数据。所以微软提供推送通知服务给第三方应用程序取得更新通知的消息,让用户觉得这个...

虫虫
2012/02/21
1K
0
Local and Remote Notification

1 关于推送(简介) 推送的目的是为了让不在前台运行的app使用户能够知道我们有信息给他们。比如一条信息,即将到来的约会等。 推送给用户的类型有三种 Users can get notified in the foll...

DavidHacker
2015/09/25
78
0
iOS之[本地通知, 远程推送, 广播通知]

:fa-exclamation-triangle:注意本地通知/推送和[广播通知NSNotificationCenter/key-value 观察通知]没有关系 1.本地通知 本地通知是由本地应用触发的,是一种基于时间行为的通知 |-例如:...

言筱羽
2015/12/11
423
0
iOS推送:本地通知UILocalNotification

Notification是智能手机应用编程中非常常用的一种传递信息的机制,而且可以非常好的节省资源,不用消耗资源来不停地检查信息状态(Pooling),在iOS下应用分为两种不同的Notification种类,本...

木木情深
2014/01/22
0
0
Windows Phone 7 - 推送通知服务

Windows Phone 中的 Microsoft Push Notification Service 向第三方开发人员提供了一个弹性,专注,而且持续的渠道,使得开发人员可以从Web Service 向移动应用程序发送信息和更新。 过去移动...

阿酷
2011/12/29
1K
0
HTML5 桌面通知:Notification API 的应用

先看效果: image.png 这是利用html5桌面通知Notification API实现的,先看看代码,再分析Notification。 Notification API 是 HTML5 新增的桌面通知 API,用于向用户显示通知信息。该通知是脱...

极客教程
2017/10/24
0
0
HTML5 桌面通知:Notification API

前言 Notification API 是 HTML5 新增的桌面通知 API,用于向用户显示通知信息。该通知是脱离浏览器的,即使用户没有停留在当前标签页,甚至最小化了浏览器,该通知信息也一样会置顶显示出来...

林鑫
2017/10/24
0
0
UILocalNotification 总结

// // AppDelegate.swift // import UIKit @UIApplicationMain class AppDelegate: UIResponder, UIApplicationDelegate { var window: UIWindow? func application(application: UIApplicat......

asjoker
2016/01/09
185
0
极光API推送 (v3 版本)

Push API v3 这是 Push API 最近的版本。 相比于 API v2 版本,v3 版本的改进为: 完全基于 https,不再提供 http 访问; 使用 HTTP Basic Authentication 的方式做访问授权。这样整个 API ...

lingfeng72
2015/09/24
2.5K
1
iOS10本地通知UserNotifications快速入门

https://www.jianshu.com/p/5713fa2bfece iOS10更新变动最大的就是通知这部分了,新版通知变得更加统一,使用更加方便,设计更加自由。以前本地通知和远程推送是分开的,虽然这些到了iOS10都...

wakice
2017/12/25
0
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

Laravel5.5 MySQL配置、读写分离及操作

Laravel 让连接不同数据库以及对数据库进行增删改查操作: 参考:http://laravelacademy.org/post/854.html 配置读写分离 应用的数据库配置位于 config/database.php(但是数据库用户及密码等...

MichaelShu
9分钟前
0
0
Linux 查看用户

存储帐号的文件:/etc/passwd 存储密码的文件:/etc/shadow 查看当前系统所有用户 grep bash /etc/passwd root修改普通用户的密码 sudo passwd user_name 然后连续两次输入新的用户密码即可...

yeahlife
15分钟前
0
0
Webpack使用nodemon实时打包编译

业务场景: 1.编写一个npm组件包并且link到了项目文件中 2.需要不断的修改并run build编译npm包并且在项目run dev 查看效果 3.问题: 每次改完npm包都要手动run build编译十分的麻烦且低效,可不...

JamesView
26分钟前
0
0
电脑炸了,浪费我好几天时间,还是简要记下来吧

我的小本本一直在兢兢业业的干活,然而前几天说炸就炸了...... 爆炸现场: 软件: windows10 pro + EIS11+ 360卫士 BIOS:N1DET98W 2.24 硬件: Xeon E3 1505-V5 nv-M3000M thinkpadP70:20E...

Oh_really
31分钟前
0
0
Git之branch和checkout

1.branch是查看、创建、删除分支 #>git branch --helpNAME git-branch - List, create, or delete branchesSYNOPSIS git branch [--color[=<when>] | --no-color] [......

汉斯-冯-拉特
32分钟前
0
0
Mybatis拦截器之数据权限过滤与分页集成

需求场景 最近项目有个数据权限的业务需求,要求大致为每个单位只能查看本级单位及下属单位的数据,例如:一个集团军下属十二个旅,那么军级用户可以看到所有数据,而每个旅则只能看到本旅部...

佛系程序猿灬
42分钟前
9
0
SpringCloud 微服务 (十六) 服务追踪 Zipkin

问题 在服务中,有一个接口,该A接口中又调用了其他服务的B、C、D接口,出现一个请求耗时大的问题,这时候并不知道该B、C、D接口中哪个接口造成的耗时量,然后比如确定C服务接口出现的耗时量大,但...

___大侠
今天
0
0
Java面试基础篇——第八篇:抽象类与接口的区别

1.抽象类 抽象类:如果一个类中包含有抽象方法,或这个类使用abstract关键字修饰,则称这个类是抽象类。 抽象方法是什么呢?抽象方法就是指用abstract关键字修饰的方法。 需要注意的是:抽象...

developlee的潇洒人生
今天
2
0
jsoup 相关资料

1.jsoup 2.Jsoup概述 3.jsoup入门 4.jsoup Java HTML Parser 1.11.3 API

IT追寻者
今天
1
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部