zoukankan      html  css  js  c++  java
  • Android Notification通知详解

    Android Notification通知详解
    002 
    003根据activity的生命周期,在activity不显示时,会执行onStop函数(比如按下home键),所以你在onStop函数(按退出键除外)里面把notification放在通知栏里,再此显示时,把notification从通知栏里去掉。或者,只要程序在运行就一直显示通知栏图标。
    004 
    005         
    006 
    007下面对Notification类中的一些常量,字段,方法简单介绍一下:
    008常量:
    009DEFAULT_ALL    使用所有默认值,比如声音,震动,闪屏等等
    010DEFAULT_LIGHTS 使用默认闪光提示
    011DEFAULT_SOUNDS 使用默认提示声音
    012DEFAULT_VIBRATE 使用默认手机震动
    013【说明】:加入手机震动,一定要在manifest.xml中加入权限:
    014<uses-permission android:name="android.permission.VIBRATE" />
    015以上的效果常量可以叠加,即通过
    016notification.defaults =DEFAULT_SOUND|DEFAULT_VIBRATE; 
    017notification.defaults |= DEFAULT_SOUND (最好在真机上测试,震动效果模拟器上没有)
    018 
    019             
    020 
    021//设置flag位
    022FLAG_AUTO_CANCEL  该通知能被状态栏的清除按钮给清除掉
    023FLAG_NO_CLEAR     该通知能被状态栏的清除按钮给清除掉
    024FLAG_ONGOING_EVENT 通知放置在正在运行
    025FLAG_INSISTENT 是否一直进行,比如音乐一直播放,知道用户响应
    026 
    027           
    028 
    029常用字段:
    030contentIntent  设置PendingIntent对象,点击时发送该Intent
    031defaults 添加默认效果
    032flags 设置flag位,例如FLAG_NO_CLEAR等
    033icon 设置图标
    034sound 设置声音
    035tickerText 显示在状态栏中的文字
    036when 发送此通知的时间戳
    037 
    038                 
    039 
    040NotificationManager常用方法介绍:
    041public void cancelAll() 移除所有通知(只是针对当前Context下的Notification)
    042public  void cancel(int id) 移除标记为id的通知 (只是针对当前Context下的所有Notification)
    043public  void notify(String tag ,int id, Notification notification) 将通知加入状态栏,标签为tag,标记为id
    044public  void notify(int id, Notification notification) 将通知加入状态栏,标记为id
    045 
    046              
    047 
    048?
    049package com.ljq.activity;
    050  
    051import android.app.Activity;
    052import android.app.Notification;
    053import android.app.NotificationManager;
    054import android.app.PendingIntent;
    055import android.content.Intent;
    056import android.graphics.Color;
    057import android.os.Bundle;
    058  
    059public class MainActivity extends Activity {
    060    /** Called when the activity is first created. */
    061    @Override-http://www.huiyi8.com/vi/​
    062    public void onCreate(Bundle savedInstanceState) {
    063        super.onCreate(savedInstanceState);
    064        setContentView(R.layout.main);
    065        clearNotification();
    066    }
    067      
    068    @Override
    069    protected void onStop() {
    070        showNotification();
    071        super.onStop();
    072    }
    073      
    074    @Override
    075    protected void onStart() {
    076        clearNotification();
    077        super.onStart();
    078    }
    079      
    080    /**
    081     * 在状态栏显示通知
    082     */VI模板大全
    083    private void showNotification(){
    084        // 创建一个NotificationManager的引用  
    085        NotificationManager notificationManager = (NotificationManager)   
    086            this.getSystemService(android.content.Context.NOTIFICATION_SERVICE);  
    087          
    088        // 定义Notification的各种属性  
    089        Notification notification =new Notification(R.drawable.icon,  
    090                "督导系统", System.currentTimeMillis());
    091        //FLAG_AUTO_CANCEL   该通知能被状态栏的清除按钮给清除掉
    092        //FLAG_NO_CLEAR      该通知不能被状态栏的清除按钮给清除掉
    093        //FLAG_ONGOING_EVENT 通知放置在正在运行
    094        //FLAG_INSISTENT     是否一直进行,比如音乐一直播放,知道用户响应
    095        notification.flags |= Notification.FLAG_ONGOING_EVENT; // 将此通知放到通知栏的"Ongoing"即"正在运行"组中  
    096        notification.flags |= Notification.FLAG_NO_CLEAR; // 表明在点击了通知栏中的"清除通知"后,此通知不清除,经常与FLAG_ONGOING_EVENT一起使用  
    097        notification.flags |= Notification.FLAG_SHOW_LIGHTS;  
    098        //DEFAULT_ALL     使用所有默认值,比如声音,震动,闪屏等等
    099        //DEFAULT_LIGHTS  使用默认闪光提示
    100        //DEFAULT_SOUNDS  使用默认提示声音
    101        //DEFAULT_VIBRATE 使用默认手机震动,需加上<uses-permission android:name="android.permission.VIBRATE" />权限
    102        notification.defaults = Notification.DEFAULT_LIGHTS;
    103        //叠加效果常量
    104        //notification.defaults=Notification.DEFAULT_LIGHTS|Notification.DEFAULT_SOUND;
    105        notification.ledARGB = Color.BLUE;  
    106        notification.ledOnMS =5000; //闪光时间,毫秒
    107          
    108        // 设置通知的事件消息  
    109        CharSequence contentTitle ="督导系统标题"; // 通知栏标题  
    110        CharSequence contentText ="督导系统内容"; // 通知栏内容  
    111        Intent notificationIntent =new Intent(MainActivity.this, MainActivity.class); // 点击该通知后要跳转的Activity  
    112        PendingIntent contentItent = PendingIntent.getActivity(this, 0, notificationIntent, 0);  
    113        notification.setLatestEventInfo(this, contentTitle, contentText, contentItent);  
    114          
    115        // 把Notification传递给NotificationManager  
    116        notificationManager.notify(0, notification);  
    117    }
    118?
    119    //删除通知   
    120    private void clearNotification(){
    121        // 启动后删除之前我们定义的通知  
    122        NotificationManager notificationManager = (NotificationManager) this
    123                .getSystemService(NOTIFICATION_SERVICE);  
    124        notificationManager.cancel(0); 
    125  
    126    }
    127}

  • 相关阅读:
    juc之ConcurrentHashMap在我工作中的实践
    设计模式在我工作中的实践
    SpringBoot突报java.lang.NoSuchFieldError分析
    JQuery.UI类库AutoComplete 调用WebService进行模糊查询
    DevExpress控件库----LookUpEdit控件 和 GridLookUpEdit控件使用
    DevExpress控件库----FlyoutPanel提示控件
    Android学习笔记---Log与Activity生命周期
    DevExpress控件库---MarqueeProgressBarControl控件和ProgressBarControl控件
    DevExpress控件库---TokenEdit控件使用
    DevExpress控件库----SearchLookUpEdit控件
  • 原文地址:https://www.cnblogs.com/xkzy/p/3801175.html
Copyright © 2011-2022 走看看