Android Notification??知详解

来源:本网整理
<无详细内??gt; scrolltotop.offset(100,120); scrolltotop.init();

[1].[代码] [Java]代码 跳至 [1]

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);  
 
    }
}
SyntaxHighlighter.autoloader( 'applescript /js/sh309/scripts/shBrushAppleScript.js?t=1451961936000', 'actionscript3 as3 /js/sh309/scripts/shBrushAS3.js?t=1451961936000', 'bash shell /js/sh309/scripts/shBrushBash.js?t=1451961936000', 'coldfusion cf /js/sh309/scripts/shBrushColdFusion.js?t=1451961936000', 'cpp c /js/sh309/scripts/shBrushCpp.js?t=1451961936000', 'obj-c objc /js/sh309/scripts/shBrushObjC.js?t=1451961936000', 'c# c-sharp csharp /js/sh309/scripts/shBrushCSharp.js?t=1451961936000', 'css /js/sh309/scripts/shBrushCss.js?t=1451961936000', 'delphi pascal /js/sh309/scripts/shBrushDelphi.js?t=1451961936000', 'diff patch pas /js/sh309/scripts/shBrushDiff.js?t=1451961936000', 'erl erlang /js/sh309/scripts/shBrushErlang.js?t=1451961936000', 'groovy /js/sh309/scripts/shBrushGroovy.js?t=1451961936000', 'haxe hx /js/sh309/scripts/shBrushHaxe.js?t=1451961936000', 'java /js/sh309/scripts/shBrushJava.js?t=1451961936000', 'jfx javafx /js/sh309/scripts/shBrushJavaFX.js?t=1451961936000', 'js jscript javascript /js/sh309/scripts/shBrushJScript.js?t=1451961936000', 'perl pl /js/sh309/scripts/shBrushPerl.js?t=1451961936000', 'php /js/sh309/scripts/shBrushPhp.js?t=1451961936000', 'text plain /js/sh309/scripts/shBrushPlain.js?t=1451961936000', 'py python /js/sh309/scripts/shBrushPython.js?t=1451961936000', 'ruby rails ror rb /js/sh309/scripts/shBrushRuby.js?t=1451961936000', 'scala /js/sh309/scripts/shBrushScala.js?t=1451961936000', 'sql /js/sh309/scripts/shBrushSql.js?t=1451961936000', 'vb vbnet /js/sh309/scripts/shBrushVb.js?t=1451961936000', 'xml xhtml xslt html /js/sh309/scripts/shBrushXml.js?t=1451961936000' ); SyntaxHighlighter.all();

免责声明 - 关于我们 - 联系我们 - 广告联系 - 友情链接 - 帮助中心 - 频道导航
Copyright © 2017 www.zgxue.com All Rights Reserved