`

Android状态栏提醒(Notification,NotificationManager)的使用

阅读更多

大家好今天简单讲一下Android状态栏提醒,这个在开发中也会经常使用,当我们插上USB会有状态栏提醒,来短信时也会有状态栏的提醒。

而在Android中有提醒功能的也可以用AlertDialog,但是我们要审重的使用,因为当使用AlertDialog 的时候,用户正在进行的操作将会被打断

因为当前焦点被AlertDialog得到。我们可以想像一下,当用户打游戏正爽的时候,这时候来了一条短信。如果这时候短信用AlertDialog提醒,用户必须先去处理这条提醒,从而才能继续游戏。用户可能会活活被气死。而使用Notification就不会带来这些麻烦事,用户完全可以打完游戏再去看这条短信。所以在开发中应根据实际需求,选择合适的控件。

好了我今天又简单写了一个Demo, 教大家如何使用Notification,大致分以下几个步骤:

第一步:新建一个Android工程命名为NotificationDemo.

第二步:修改main.xml代码如下:

view plaincopy to clipboardprint?
<?xml version="1.0" encoding="utf-8"?>  
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android
    android:orientation="vertical" 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent" 
    >  
<TextView    
    android:layout_width="fill_parent"   
    android:layout_height="wrap_content"   
    android:text="Welcome to Mr Wei's blog" 
    />  
<Button  
    android:id="@+id/showButton" 
    android:layout_width="fill_parent"   
    android:layout_height="wrap_content" 
    android:text="showNotification" 
/>  
<Button  
    android:id="@+id/cancelButton" 
    android:layout_width="fill_parent"   
    android:layout_height="wrap_content" 
    android:text="cancelNotification" 
/>  
</LinearLayout> 
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    >
<TextView 
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:text="Welcome to Mr Wei's blog"
    />
<Button
 android:id="@+id/showButton"
 android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:text="showNotification"
/>
<Button
 android:id="@+id/cancelButton"
 android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:text="cancelNotification"
/>
</LinearLayout>
 

第三步:修改NotificationDemo.java代码如下:

view plaincopy to clipboardprint?
package com.tutor.notification;  
import android.app.Activity;  
import android.app.Notification;  
import android.app.NotificationManager;  
import android.app.PendingIntent;  
import android.content.Context;  
import android.content.Intent;  
import android.os.Bundle;  
import android.view.View;  
import android.view.View.OnClickListener;  
import android.widget.Button;  
public class NotificationDemo extends Activity implements OnClickListener{  
      
    private Context mContext;  
    private Button showButton,cancelButton;  
    private Notification mNotification;  
    private NotificationManager mNotificationManager;  
    private final static int NOTIFICATION_ID = 0x0001;  
      
    @Override 
    public void onCreate(Bundle savedInstanceState) {  
        super.onCreate(savedInstanceState);  
        setContentView(R.layout.main);   
          
        setupViews();         
    }  
    //这里是初始化一些操作,可以看到onCreate()方法里代码非常简洁。  
    public void setupViews(){  
           mContext = NotificationDemo.this;  
           showButton = (Button)findViewById(R.id.showButton);  
           cancelButton = (Button)findViewById(R.id.cancelButton);  
             
           mNotification = new Notification(R.drawable.icon,"This is a notification.",System.currentTimeMillis());  
           //将使用默认的声音来提醒用户  
           mNotification.defaults = Notification.DEFAULT_SOUND;  
           mNotificationManager = (NotificationManager)this.getSystemService(NOTIFICATION_SERVICE);  
             
            
           showButton.setOnClickListener(this);  
           cancelButton.setOnClickListener(this);  
    }  
    //按钮点击事件响应  
    public void onClick(View v) {  
          
        if(v == showButton){  
            Intent mIntent = new Intent(mContext,NotificationDemo.class);  
            //这里需要设置Intent.FLAG_ACTIVITY_NEW_TASK属性  
            mIntent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);      
            PendingIntent mContentIntent =PendingIntent.getActivity(mContext,0, mIntent, 0);  
            //这里必需要用setLatestEventInfo(上下文,标题,内容,PendingIntent)不然会报错.  
            mNotification.setLatestEventInfo(mContext, "10086", "您的当前话费不足,请充值.哈哈~", mContentIntent);  
            //这里发送通知(消息ID,通知对象)  
            mNotificationManager.notify(NOTIFICATION_ID, mNotification);     
        }else if(v == cancelButton){  
            //取消只要把通知ID传过来就OK了.  
            mNotificationManager.cancel(NOTIFICATION_ID);  
        }  
    }  

package com.tutor.notification;
import android.app.Activity;
import android.app.Notification;
import android.app.NotificationManager;
import android.app.PendingIntent;
import android.content.Context;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
public class NotificationDemo extends Activity implements OnClickListener{
   
 private Context mContext;
    private Button showButton,cancelButton;
    private Notification mNotification;
    private NotificationManager mNotificationManager;
    private final static int NOTIFICATION_ID = 0x0001;
   
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
       
        setupViews();      
    }
    //这里是初始化一些操作,可以看到onCreate()方法里代码非常简洁。
    public void setupViews(){
        mContext = NotificationDemo.this;
        showButton = (Button)findViewById(R.id.showButton);
        cancelButton = (Button)findViewById(R.id.cancelButton);
       
           mNotification = new Notification(R.drawable.icon,"This is a notification.",System.currentTimeMillis());
           //将使用默认的声音来提醒用户
           mNotification.defaults = Notification.DEFAULT_SOUND;
           mNotificationManager = (NotificationManager)this.getSystemService(NOTIFICATION_SERVICE);
          
         
           showButton.setOnClickListener(this);
           cancelButton.setOnClickListener(this);
    }
    //按钮点击事件响应
 public void onClick(View v) {
  
  if(v == showButton){
   Intent mIntent = new Intent(mContext,NotificationDemo.class);
   //这里需要设置Intent.FLAG_ACTIVITY_NEW_TASK属性
   mIntent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); 
   PendingIntent mContentIntent =PendingIntent.getActivity(mContext,0, mIntent, 0);
   //这里必需要用setLatestEventInfo(上下文,标题,内容,PendingIntent)不然会报错.
   mNotification.setLatestEventInfo(mContext, "10086", "您的当前话费不足,请充值.哈哈~", mContentIntent);
   //这里发送通知(消息ID,通知对象)
         mNotificationManager.notify(NOTIFICATION_ID, mNotification);  
  }else if(v == cancelButton){
   //取消只要把通知ID传过来就OK了.
   mNotificationManager.cancel(NOTIFICATION_ID);
  }
 }
}

第四步:运行Android工程,效果如下图所示:

 

 

本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/Android_Tutor/archive/2010/06/27/5696773.aspx

本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/Android_Tutor/archive/2010/06/27/5696773.aspx

分享到:
评论

相关推荐

    android 状态栏的图标与文字提醒 NotificationManager与Notification

    状态栏的图标与文字提醒功能主要由`NotificationManager`和`Notification`类共同实现。这两个类是Android SDK提供的重要组件,用于创建、管理和展示应用程序的通知。 首先,我们来详细了解一下`Notification`类。`...

    Android 在状态栏添加Notification信息图标及提示.rar

    这个例子演示Android 在状态栏添加Notification信息图标及提示,相信大家对这个功能已经不陌生了,手机中安装的APP,一般都会在后台运行,时不时会在手机顶部的状态栏中显示应用的图标,滑出状态栏会看到详细的信息...

    Android 状态栏添加图标

    总结,Android状态栏添加图标涉及到的关键技术有`Notification`、`NotificationManager`、`NotificationChannel`(针对Android O及以上版本)、`PendingIntent`以及UI交互事件处理。通过理解这些组件和方法,开发者...

    android 状态栏通知(Notification)的默认和自定义

    本篇文章将详细介绍如何实现Android状态栏通知的默认形式以及自定义设置。 首先,创建默认状态栏通知相对简单。在Android中,我们需要使用`NotificationCompat.Builder`类来构建通知。以下是一个基本示例: ```...

    android Notification通知消息学习(NotificationManager)

    在Android系统中,Notification是应用与用户交互的重要方式,它能够在状态栏中显示消息,即使用户不在使用应用程序也能接收到相关信息。这篇博文“android Notification通知消息学习(NotificationManager)”显然是...

    Android开发 — 状态栏通知Notification、NotificationManager详解

    总之,Android状态栏通知通过`Notification`和`NotificationManager`来实现,它们提供了丰富的功能,如自定义图标、文本、声音、振动等,使得开发者能够创建出吸引用户注意力并能引导用户进行下一步操作的通知。...

    android状态栏显示

    在Android开发中,状态栏(StatusBar)是用户界面不可或缺的一部分,它显示了系统时间、电池状态、网络连接等重要信息。有时候,开发者需要对状态栏进行定制,例如改变颜色、图标或者隐藏/显示状态栏,以实现特定的...

    Android实现Notification的通知栏常驻.zip

    在Android系统中,Notification是一种重要的用户界面元素,用于在状态栏显示应用的提醒或消息。当用户无法直接与应用交互时,例如手机锁屏或在其他应用中,Notification可以帮助用户了解应用的状态并进行相应的操作...

    Android高级应用源码-状态栏通知小图标,notification通知.zip

    在Android开发中,状态栏通知(Notification)是与用户交互的一种重要方式,它可以在应用程序后台运行时向用户提供信息。此压缩包"Android高级应用源码-状态栏通知小图标,notification通知.zip"显然包含了关于如何...

    Android studio发送状态栏通知Notifycation demo

    在Android开发中,状态栏通知(Notification)是与用户交互的一种常见方式,它可以在不干扰用户当前活动的情况下向用户传达信息。本示例是关于如何使用Android Studio创建一个简单的状态栏通知的演示。通过理解并...

    Android代码-状态栏通知小图标notification通知.rar

    "Android代码-状态栏通知小图标notification通知.rar"这个压缩包很可能是包含了一些示例代码,用于展示如何创建和定制状态栏通知,特别是关于小图标的使用。 首先,我们要理解Android中的状态栏通知是如何工作的。...

    android状态栏和主界面融为了一体

    在Android开发中,状态栏(StatusBar)是手机或平板设备屏幕顶部显示系统信息的区域,如时间、电量、网络状态等。...通过研究和实践,开发者可以更好地理解和掌握Android状态栏的相关操作,提升应用的用户体验。

    android 状态栏

    本文将深入探讨Android状态栏的相关知识点,包括状态栏的定制、通知的管理和显示,以及如何通过编程方式进行控制。 一、状态栏的定制 1. 隐藏与显示状态栏 Android提供了隐藏和显示状态栏的API,开发者可以通过...

    Android应用源码之notification.zip

    在Android应用开发中,Notification是用户界面中一个重要的组成部分,它允许应用在状态栏中显示信息,即使用户不在与应用交互时也能提醒用户有新的活动或事件发生。本压缩包"Android应用源码之notification.zip"很...

    状态栏通知小图标,notification通知

    状态栏通知小图标,通常被称为`Notification`,是Android系统中一种重要的用户界面元素,用于在状态栏上显示应用的提醒或消息。这些小图标在用户不与应用直接交互时提供了一个简短的信息提示,帮助用户了解应用的...

    NotificationManager通知使用

    通知是应用程序与用户交互的一种非侵入性方式,通常在状态栏显示,允许用户在不离开当前活动的情况下了解应用的最新信息或接收提醒。这篇博文将深入探讨`NotificationManager`的使用及其背后的实现原理。 首先,...

    android消息通知栏Notification

    在Android系统中,`Notification`是开发者用于向用户展示非交互式信息的重要工具,它通常出现在状态栏中,用户可以通过下拉通知栏查看并交互。`Notification`可以在应用不处于前台运行时,依然向用户传达重要的消息...

    android之手机通知栏Notification的使用

    Notification是Android提供的一种原生组件,用于在状态栏显示消息,当用户滑动下拉通知中心时,可以看到更详细的信息。Notification通常包含标题、文本、图标以及可能的附加操作按钮,如“查看详情”或“取消”。...

    Android自定义通知栏Notification

    Notification是系统级的消息提示,它可以在用户不直接与应用交互时提供信息,比如在状态栏显示消息、更新或者提醒。本项目“Android自定义通知栏Notification”旨在实现一个功能丰富的通知栏组件,其主要涉及以下...

Global site tag (gtag.js) - Google Analytics