Android Notification通知详解

1. [代码][Java]代码     跳至 [1] [全屏预览]

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
Android Notification通知详解
 
根据activity的生命周期,在activity不显示时,会执行onStop函数(比如按下home键),所以你在onStop函数(按退出键除外)里面把notification放在通知栏里,再此显示时,把notification从通知栏里去掉。或者,只要程序在运行就一直显示通知栏图标。
 
         
 
下面对Notification类中的一些常量,字段,方法简单介绍一下:
常量:
DEFAULT_ALL    使用所有默认值,比如声音,震动,闪屏等等
DEFAULT_LIGHTS 使用默认闪光提示
DEFAULT_SOUNDS 使用默认提示声音
DEFAULT_VIBRATE 使用默认手机震动
【说明】:加入手机震动,一定要在manifest.xml中加入权限:
<uses-permission android:name= "android.permission.VIBRATE" />
以上的效果常量可以叠加,即通过
notification.defaults =DEFAULT_SOUND|DEFAULT_VIBRATE; 
notification.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 发送此通知的时间戳
 
                 
 
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
 
              
 
?
package com.ljq.activity;
  
import android.app.Activity;
import android.app.Notification;
import android.app.NotificationManager;
import android.app.PendingIntent;
import android.content.Intent;
import android.graphics.Color;
import android.os.Bundle;
  
public class MainActivity extends Activity {
     /** Called when the activity is first created. */
     @Override
     public void onCreate(Bundle savedInstanceState) {
         super .onCreate(savedInstanceState);
         setContentView(R.layout.main);
         clearNotification();
     }
      
     @Override
     protected void onStop() {
         showNotification();
         super .onStop();
     }
      
     @Override
     protected void onStart() {
         clearNotification();
         super .onStart();
     }
      
     /**
      * 在状态栏显示通知
      */
     private void showNotification(){
         // 创建一个NotificationManager的引用  
         NotificationManager notificationManager = (NotificationManager)   
             this .getSystemService(android.content.Context.NOTIFICATION_SERVICE);  
          
         // 定义Notification的各种属性  
         Notification notification = new Notification(R.drawable.icon,  
                 "督导系统" , System.currentTimeMillis());
         //FLAG_AUTO_CANCEL   该通知能被状态栏的清除按钮给清除掉
         //FLAG_NO_CLEAR      该通知不能被状态栏的清除按钮给清除掉
         //FLAG_ONGOING_EVENT 通知放置在正在运行
         //FLAG_INSISTENT     是否一直进行,比如音乐一直播放,知道用户响应
         notification.flags |= Notification.FLAG_ONGOING_EVENT; // 将此通知放到通知栏的"Ongoing"即"正在运行"组中  
         notification.flags |= Notification.FLAG_NO_CLEAR; // 表明在点击了通知栏中的"清除通知"后,此通知不清除,经常与FLAG_ONGOING_EVENT一起使用  
         notification.flags |= Notification.FLAG_SHOW_LIGHTS;  
         //DEFAULT_ALL     使用所有默认值,比如声音,震动,闪屏等等
         //DEFAULT_LIGHTS  使用默认闪光提示
         //DEFAULT_SOUNDS  使用默认提示声音
         //DEFAULT_VIBRATE 使用默认手机震动,需加上<uses-permission android:name="android.permission.VIBRATE" />权限
         notification.defaults = Notification.DEFAULT_LIGHTS;
         //叠加效果常量
         //notification.defaults=Notification.DEFAULT_LIGHTS|Notification.DEFAULT_SOUND;
         notification.ledARGB = Color.BLUE;  
         notification.ledOnMS = 5000 ; //闪光时间,毫秒
          
         // 设置通知的事件消息  
         CharSequence contentTitle = "督导系统标题" ; // 通知栏标题  
         CharSequence contentText = "督导系统内容" ; // 通知栏内容  
         Intent notificationIntent = new Intent(MainActivity. this , MainActivity. class ); // 点击该通知后要跳转的Activity  
         PendingIntent contentItent = PendingIntent.getActivity( this , 0 , notificationIntent, 0 );  
         notification.setLatestEventInfo( this , contentTitle, contentText, contentItent);  
          
         // 把Notification传递给NotificationManager  
         notificationManager.notify( 0 , notification);  
     }
?
     //删除通知   
     private void clearNotification(){
         // 启动后删除之前我们定义的通知  
         NotificationManager notificationManager = (NotificationManager) this
                 .getSystemService(NOTIFICATION_SERVICE);  
         notificationManager.cancel( 0 ); 
  
     }
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Android常驻通知(Notification)是指在用户状态栏中一直显示的通知图标和文本内容,不会因为用户操作或应用进程被销毁而消失。常驻通知通常用于实时监测、后台服务、音乐播放等需要持续提醒用户的场景。 常驻通知的实现步骤如下: 1. 首先,需要创建一个Notification对象,包括通知图标、标题、内容等信息。 2. 然后,创建一个PendingIntent,用于定义用户点击通知后的操作,比如打开应用的某个Activity或执行某个Service。 3. 创建一个NotificationChannel(通知渠道),用于定义通知的重要程度,包括声音、震动等设置。 4. 将Notification对象与PendingIntent关联,并将其设置为常驻通知的优先级。 5. 最后,调用NotificationManagernotify方法,将通知显示在用户的状态栏上。 需要注意的是,常驻通知存在一些使用限制和最佳实践: 1. 用户可以通过设置中的通知管理来关闭或打开特定应用的常驻通知。 2. 常驻通知不适合用于广告或频繁推送的内容,以免打扰用户。 3. 为了避免误导用户,常驻通知的图标和文本内容应与应用的实际情况相符。 4. 如果需要更新通知的内容或操作,可以使用NotificationManagernotify方法进行更新,并保持通知的id不变。 总之,常驻通知Android提供的一个重要功能,可以实现持续提醒用户和后台监测的需求。但应用开发者需要注意使用场景和用户体验,遵循Android的最佳实践,以确保用户对常驻通知的接受和理解。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值