博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Android应用开发基础篇(2)-----Notification(状态栏通知)
阅读量:6624 次
发布时间:2019-06-25

本文共 3737 字,大约阅读时间需要 12 分钟。

一、概述

     Notification这个部件的功能是在状态栏里显示消息提醒,比如有未读的短信或者是未接的电话,那么状态栏里都会有显示,更或者是从某个应用(比如QQ,酷我音乐等等)里按Home键回到桌面,这时状态栏里也会显示这个应用的图标,这就是Notification。

 

二、要求

     程序主界面上有一个Button按钮,当用户点击这个按钮时状态栏会显示一则通知,当按住状态栏下拉时可以看到这个通知在下拉列表里,此时点击这个通知就跳转到另一个界面(相当于查看这个通知)并且能将这个通知在状态栏里取消。

 

三、实现

      新建工程MyNotice,在/res/layout/main.xml文件里添加一个Button:

 

完整的main.xml文件:

 

修改后的MyNoticeActivity.java文件

1 package com.nan.notice;  2  3 import android.app.Activity;  4 import android.app.Notification;  5 import android.app.NotificationManager;  6 import android.app.PendingIntent;  7 import android.content.Intent;  8 import android.os.Bundle;  9 import android.view.View; 10 import android.widget.Button; 11 12 13 public class MyNoticeActivity extends Activity 14 {
15 //通知的编号 16 static final int MYNOTICE = 0; 17 18 //定义各个对象 19 private Button mButton = null; 20 private NotificationManager mNotificationManager = null; 21 private Intent mIntent = null; 22 private Notification mNotification = null; 23 private PendingIntent mPendingIntent = null; 24 25 26 /** Called when the activity is first created. */ 27 @Override 28 public void onCreate(Bundle savedInstanceState) 29 {
30 super.onCreate(savedInstanceState); 31 setContentView(R.layout.main); 32 33 //mButton实例化 34 mButton = (Button)findViewById(R.id.mbutton); 35 //mNotificationManager实例化 36 mNotificationManager = (NotificationManager)getSystemService(NOTIFICATION_SERVICE); 37 38 mIntent = new Intent(); 39 //设置要跳转到的Activity 40 mIntent.setClass(MyNoticeActivity.this, Activity2.class); 41 //设置点击下拉状态栏列表里的这个通知时所要显示的Activity 42 mPendingIntent = PendingIntent.getActivity(MyNoticeActivity.this, 0, mIntent, 0); 43 mNotification = new Notification(); 44 //设置在通知栏里显示的图标 45 mNotification.icon = R.drawable.ic_launcher; 46 //设置在通知栏里显示的文本 47 mNotification.tickerText = "Button 通知..."; 48 //设置通知铃声 49 mNotification.defaults = Notification.DEFAULT_SOUND; 50 //设置在下拉状态栏时所显示的关于这个通知的内容 51 mNotification.setLatestEventInfo(MyNoticeActivity.this, "Button", "Button通知", mPendingIntent); 52 //设置按钮监听 53 mButton.setOnClickListener(new View.OnClickListener() 54 {
55 @Override 56 public void onClick(View v) 57 {
58 // TODO Auto-generated method stub 59 //执行这个通知 60 mNotificationManager.notify(MYNOTICE, mNotification); 61 62 } 63 }); 64 65 } 66 67 }

在/src里添加一个名为Activity2.java文件:

1 package com.nan.notice;  2  3 import android.app.Activity;  4 import android.app.NotificationManager;  5 import android.os.Bundle;  6  7  8 public class Activity2 extends Activity  9 {
10 //与MyNoticeActivity.java中定义的值相同 11 static final int MYNOTICE = 0; 12 13 private NotificationManager mNotificationManager = null; 14 15 /** Called when the activity is first created. */ 16 @Override 17 public void onCreate(Bundle savedInstanceState) 18 {
19 super.onCreate(savedInstanceState); 20 setContentView(R.layout.activity2); 21 22 mNotificationManager = (NotificationManager)getSystemService(NOTIFICATION_SERVICE); 23 24 } 25 26 @Override 27 public void onResume() 28 {
29 super.onResume(); 30 //在Activity显示完成后取消在状态栏里的这个通知 31 mNotificationManager.cancel(MYNOTICE); 32 } 33 34 }

在/res/layout里添加一个activity2.xml文件

1 
2
6 7
13 14

在AndroidManifest.xml文件里声明多一个activity

好了,运行程序后,如下

 点击按钮后,可以看到状态栏里显示一个消息:

 按住状态栏然后下拉,可以看到有一条提示:

 

 

 点击这条提示,进入到这条提示的内容,同时状态栏里的这个通知也消失了:

 

 要求完成!

 

 

 

 

转载地址:http://xytpo.baihongyu.com/

你可能感兴趣的文章
Golang 语言的单元测试和性能测试(也叫 压力测试)
查看>>
Java中CAS详解
查看>>
Java Spring MVC 错误 及 常见问题 总结
查看>>
Linux系统实战项目——sudo日志审计
查看>>
Android Application Task Activities的关系
查看>>
浅谈CSS盒子模型
查看>>
实现iFrame自适应高度,原来很简单!
查看>>
get app id
查看>>
poj 3624 0/1背包暨0/1背包的学习
查看>>
[俗一下]世界500强公司的面试问题与答案提示 [转]
查看>>
使用 Excel Services ,结合 Analysis Services 在 SharePoint 中发布报表
查看>>
SQL Server数据导入导出技术概述与比较
查看>>
format的用法
查看>>
DHCPv6 server port and DHCPv6 client port
查看>>
10个最佳的触控手式的JavaScript框架(转)
查看>>
BitmapFactory.Options避免 内存溢出 OutOfMemoryError的优化方法
查看>>
Python中通过Image的open之后,去show结果打不开bmp图片,无法正常显示图片
查看>>
DNGuard 免费的DotNet加密保护工具 V1.0
查看>>
编程中的命名设计
查看>>
easyui form validate总是返回false原因
查看>>