Android中使用Notification实现状态栏的通知

在使用手机时,当有未接来电或者新短消息时,手机会给出响应的提示信息,这些提示信息通常会显示到手机屏幕的状态栏上。

Android也提供了用于处理这些信息的类,它们是Notification和NotificationManager。其中,Notification代表的是具有全局效果的通知,而NotificationManager则是用于发送Notification通知的系统服务。

使用Notification和NotificationManager类发送和显示通知也比较简单,大致可以分为以下四个步骤

(1)调用getSystemService() 方法获取系统的NotificationManager服务

(2)创建一个Notification对象,并为其设置各种属性

(3)为Notification对象设置事件信息

(4)通过NotificationManager类的notify()方法发送Notification通知

下面通过一个实例说明和使用Notification在状态栏上显示通知

国际惯例

运行结果:

布局文件就不发了 线性垂直布局 两个按钮

MainActivity.class

package com.example.notification;
import android.os.Bundle;
import android.app.Activity;
import android.app.Notification;
import android.app.Notification.Builder;
import android.app.NotificationManager;
import android.app.PendingIntent;
import android.content.Context;
import android.content.Intent;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
public class MainActivity extends Activity implements OnClickListener{
 private NotificationManager manager;
 private Button button1;
 private Button button2;
 private int Notification_ID;
 @Override
 protected void onCreate(Bundle savedInstanceState) {
 super.onCreate(savedInstanceState);
 setContentView(R.layout.activity_main);
 manager=(NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE);
 button1=(Button) findViewById(R.id.button1);
 button2=(Button) findViewById(R.id.button2);
 button1.setOnClickListener(this);
 button2.setOnClickListener(this);
 }
 @Override
 public void onClick(View v) {
 // TODO Auto-generated method stub
 switch(v.getId()){
 case R.id.button1:{
 showNotification();
 break;
 }
 case R.id.button2:{
 manager.cancel(Notification_ID);
 break;
 }
 }
 }
 private void showNotification() {
 // TODO Auto-generated method stub
 Notification.Builder builder=new Builder(this);
 builder.setSmallIcon(R.drawable.ic_launcher);//设置图标
 builder.setTicker("通知来啦");//手机状态栏的提示
 builder.setContentTitle("我是通知标题");//设置标题
 builder.setContentText("我是通知内容");//设置通知内容
 builder.setWhen(System.currentTimeMillis());//设置通知时间
 Intent intent=new Intent(this,MainActivity.class);
 PendingIntent pendingIntent=PendingIntent.getActivity(this, 0, intent, 0);
 builder.setContentIntent(pendingIntent);//点击后的意图
 builder.setDefaults(Notification.DEFAULT_LIGHTS);//设置指示灯
 builder.setDefaults(Notification.DEFAULT_SOUND);//设置提示声音
 builder.setDefaults(Notification.DEFAULT_VIBRATE);//设置震动
 Notification notification=builder.build();//4.1以上,以下要用getNotification()
 manager.notify(Notification_ID, notification);
 }
}

上面代码中设置的指示灯和震动,由于程序中要访问系统的指示灯和振动器 所以要在AndroidManifest.xml中声明使用权限

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

以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,同时也希望多多支持我们!

(0)

相关推荐

  • Android如何获取系统通知的开启状态详解

    前言 大家应该都有所体会,平常在android应用中,有时候会用到系统通知是否开启的状态,以便进行下一步操作,所以,获取到状态是很有必要的,之前一直苦于找不到合适的方法来解决,因为毕竟涉及到系统,不好办,今日看到大神支招,试了一下,很好用,话不多少了,来一起看看详细的介绍吧. 有图有真相,首先到设置里边关闭该应用的通知开关: 然后在应用中,点击按钮,获取状态: 这时候,回到设置里,打开通知按钮: 再次点击应用中的测试按钮,可以看到,通知已经可用了: 代码量很少,但是很精辟,就一个工具类,用到了j

  • android项目实现带进度条的系统通知栏消息

    我们在做Android开发的时候经常会遇到后台线程执行的比如说下载文件的时候,这个时候我们希望让客户能看到后台有操作进行,这时候我们就可以使用进度条,那么既然在后台运行,为的就是尽量不占用当前操作空间,用户可能还要进行其他操作,最好的方法就是在通知栏有个通知消息并且有个进度条.本文给一个例子工读者参考. 效果图如下: 主界面只有一个按钮就不上文件了 通知栏显示所用到的布局文件content_view.xml <?xml version="1.0" encoding="u

  • Android中使用Notification实现状态栏的通知

    在使用手机时,当有未接来电或者新短消息时,手机会给出响应的提示信息,这些提示信息通常会显示到手机屏幕的状态栏上. Android也提供了用于处理这些信息的类,它们是Notification和NotificationManager.其中,Notification代表的是具有全局效果的通知,而NotificationManager则是用于发送Notification通知的系统服务. 使用Notification和NotificationManager类发送和显示通知也比较简单,大致可以分为以下四个步

  • Android中通过Notification&NotificationManager实现消息通知

    notification是一种让你的应用程序在没有开启情况下或在后台运行警示用户.它是看不见的程序组件(Broadcast Receiver,Service和不活跃的Activity)警示用户有需要注意的事件发生的最好途径. 1.新建一个android项目 我新建项目的 minSdkVersion="11",targetSdkVersion="19".也就是支持最低版本的3.0的. 2.习惯性地打开项目清单文件AndroidManifest.xml,添加一个权限:&

  • Android开发之Notification手机状态栏通知用法实例分析

    本文实例讲述了Android开发之Notification手机状态栏通知用法.分享给大家供大家参考,具体如下: 简介: 通知是显示在手机状态栏的通知(PS:就是手机上方,显示时间啥的那一栏) 用法: Notification添加了Builder()类,其包含如下方法: 1. setDefaults()         通知led灯.音乐.震动等 2. setAutoChange()  设置点击通知后,通知自动从状态栏删除 3. setContentTitle()   通知标题 4. setCon

  • Android中new Notification创建实例的最佳方法

    目前 Android 已经不推荐使用下列方式创建 Notification实例: Notification notification = new Notification(R.drawable.ic_launcher,"This is ticker text",System.currentTimeMillis()); 最好采用下列方式: Notification notification = new Notification.Builder(this) .setContentTitle

  • Android中AlarmManager+Notification实现定时通知提醒功能

    AlarmManager简介 AlarmManager实质是一个全局的定时器,是Android中常用的一种系统级别的提示服务,在指定时间或周期性启动其它组件(包括Activity,Service,BroadcastReceiver).本文将讲解一下如何使用AlarmManager实现定时提醒功能. 闹钟配置 周期闹钟 Intent intent = new Intent(); intent.setAction(GlobalValues.TIMER_ACTION_REPEATING); Pendi

  • Android中关于Notification及NotificationManger的详解

    Android状态栏提醒 在Android中提醒功能也可以用AlertDialog,但是我们要慎重的使用,因为当使用AlertDialog的时候,用户正在进行的操作将会被打断,因为当前焦点被AlertDialog得到.我们可以想像一下,当用户打游戏正爽的时候,这时候来了一条短信.如果这时候短信用AlertDialog提醒,用户必须先去处理这条提醒,从而才能继续游戏.用户可能会活活被气死.而使用Notification就不会带来这些麻烦事,用户完全可以打完游戏再去看这条短信.所以在开发中应根据实际

  • 详解Android中使用Notification实现进度通知栏(示例三)

    我们在使用APP的过程中,软件会偶尔提示我们进行版本更新,我们点击确认更新后,会在通知栏显示下载更新进度(已知长度的进度条)以及安装情况(不确定进度条),这就是我们今天要实现的功能.实现效果如下: 在代码实现功能前,我们先解释进度条的两种状态: (1)显示一个已知长度的进度条指示器(Displaying a fixed-duration progress indicator) 为了能够显示一个确定的进度条,通过调用setProgress() setProgress(max, progress,

  • 详解Android中的沉浸式状态栏效果实例

    无意间了解到沉浸式状态栏,感觉贼拉的高大上,于是就是试着去了解一下,就有了这篇文章.下面就来了解一下啥叫沉浸式状态栏.传统的手机状态栏是呈现出黑色条状的,有的和手机主界面有很明显的区别.这一样就在一定程度上牺牲了视觉宽度,界面面积变小. Google从android kitkat(Android 4.4)开始,给我们开发者提供了一套能透明的系统ui样式给状态栏和导航栏,这样的话就不用向以前那样每天面对着黑乎乎的上下两条黑栏了,还可以调成跟Activity一样的样式,形成一个完整的主题,和IOS7

  • Android中的Notification机制深入理解

    本文需要解决的问题 笔者最近正在做一个项目,里面需要用到 Android Notification 机制来实现某些特定需求.我正好通过这个机会研究一下 Android Notification 相关的发送逻辑和接收逻辑,以及整理相关的笔记.我研究 Notification 机制的目的是解决以下我在使用过程中所思考的问题: 我们创建的 Notification 实例最终以什么样的方式发送给系统? 系统是如何接收到 Notification 实例并显示的? 我们是否能拦截其他 app 的 Notif

  • Android中隐藏标题栏和状态栏的方法

    一.隐藏标题栏 复制代码 代码如下: //隐藏标题栏        this.requestWindowFeature(Window.FEATURE_NO_TITLE); 二.隐藏状态栏 复制代码 代码如下: //隐藏状态栏        this.getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN); 三.去掉所有Activity界

随机推荐