Android中Notification用法实例总结

本文实例总结了 Android中Notification用法。分享给大家供大家参考,具体如下:

我们在用手机的时候,如果来了短信,而我们没有点击查看的话,是不是在手机的最上边的状态栏里有一个短信的小图标提示啊?你是不是也想实现这种功能呢?今天的Notification就是解决这个问题的。

我们也知道Android系统也是在不断升级的,有关Notification的用法也就有很多种,有的方法已经被android抛弃了,现在我实现了三种不同的方法,并适应不同的android版本。现在我就把代码公布出来,我喜欢把解释写在代码中,在这里我就不多说了,先看效果图:

再看代码,主要的代码如下:

package net.loonggg.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.widget.RemoteViews;
public class MainActivity extends Activity {
  private static final int NOTIFICATION_FLAG = 1;
  @Override
  protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
  }
  public void notificationMethod(View view) {
    // 在Android进行通知处理,首先需要重系统哪里获得通知管理器NotificationManager,它是一个系统Service。
    NotificationManager manager = (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE);
    switch (view.getId()) {
    // 默认通知
    case R.id.btn1:
      // 创建一个PendingIntent,和Intent类似,不同的是由于不是马上调用,需要在下拉状态条出发的activity,所以采用的是PendingIntent,即点击Notification跳转启动到哪个Activity
      PendingIntent pendingIntent = PendingIntent.getActivity(this, 0,
          new Intent(this, MainActivity.class), 0);
      // 下面需兼容Android 2.x版本是的处理方式
      // Notification notify1 = new Notification(R.drawable.message,
      // "TickerText:" + "您有新短消息,请注意查收!", System.currentTimeMillis());
      Notification notify1 = new Notification();
      notify1.icon = R.drawable.message;
      notify1.tickerText = "TickerText:您有新短消息,请注意查收!";
      notify1.when = System.currentTimeMillis();
      notify1.setLatestEventInfo(this, "Notification Title",
          "This is the notification message", pendingIntent);
      notify1.number = 1;
      notify1.flags |= Notification.FLAG_AUTO_CANCEL; // FLAG_AUTO_CANCEL表明当通知被用户点击时,通知将被清除。
      // 通过通知管理器来发起通知。如果id不同,则每click,在statu那里增加一个提示
      manager.notify(NOTIFICATION_FLAG, notify1);
      break;
    // 默认通知 API11及之后可用
    case R.id.btn2:
      PendingIntent pendingIntent2 = PendingIntent.getActivity(this, 0,
          new Intent(this, MainActivity.class), 0);
      // 通过Notification.Builder来创建通知,注意API Level
      // API11之后才支持
      Notification notify2 = new Notification.Builder(this)
          .setSmallIcon(R.drawable.message) // 设置状态栏中的小图片,尺寸一般建议在24×24,这个图片同样也是在下拉状态栏中所显示,如果在那里需要更换更大的图片,可以使用setLargeIcon(Bitmap
           // icon)
          .setTicker("TickerText:" + "您有新短消息,请注意查收!")// 设置在status
          // bar上显示的提示文字
          .setContentTitle("Notification Title")// 设置在下拉status
          // bar后Activity,本例子中的NotififyMessage的TextView中显示的标题
          .setContentText("This is the notification message")// TextView中显示的详细内容
          .setContentIntent(pendingIntent2) // 关联PendingIntent
          .setNumber(1) // 在TextView的右方显示的数字,可放大图片看,在最右侧。这个number同时也起到一个序列号的左右,如果多个触发多个通知(同一ID),可以指定显示哪一个。
          .getNotification(); // 需要注意build()是在API level
      // 16及之后增加的,在API11中可以使用getNotificatin()来代替
      notify2.flags |= Notification.FLAG_AUTO_CANCEL;
      manager.notify(NOTIFICATION_FLAG, notify2);
      break;
    // 默认通知 API16及之后可用
    case R.id.btn3:
      PendingIntent pendingIntent3 = PendingIntent.getActivity(this, 0,
          new Intent(this, MainActivity.class), 0);
      // 通过Notification.Builder来创建通知,注意API Level
      // API16之后才支持
      Notification notify3 = new Notification.Builder(this)
          .setSmallIcon(R.drawable.message)
          .setTicker("TickerText:" + "您有新短消息,请注意查收!")
          .setContentTitle("Notification Title")
          .setContentText("This is the notification message")
          .setContentIntent(pendingIntent3).setNumber(1).build(); // 需要注意build()是在API
          // level16及之后增加的,API11可以使用getNotificatin()来替代
      notify3.flags |= Notification.FLAG_AUTO_CANCEL; // FLAG_AUTO_CANCEL表明当通知被用户点击时,通知将被清除。
      manager.notify(NOTIFICATION_FLAG, notify3);// 步骤4:通过通知管理器来发起通知。如果id不同,则每click,在status哪里增加一个提示
      break;
    // 自定义通知
    case R.id.btn4:
      // Notification myNotify = new Notification(R.drawable.message,
      // "自定义通知:您有新短信息了,请注意查收!", System.currentTimeMillis());
      Notification myNotify = new Notification();
      myNotify.icon = R.drawable.message;
      myNotify.tickerText = "TickerText:您有新短消息,请注意查收!";
      myNotify.when = System.currentTimeMillis();
      myNotify.flags = Notification.FLAG_NO_CLEAR;// 不能够自动清除
      RemoteViews rv = new RemoteViews(getPackageName(),
          R.layout.my_notification);
      rv.setTextViewText(R.id.text_content, "hello wrold!");
      myNotify.contentView = rv;
      Intent intent = new Intent(Intent.ACTION_MAIN);
      PendingIntent contentIntent = PendingIntent.getActivity(this, 1,
          intent, 1);
      myNotify.contentIntent = contentIntent;
      manager.notify(NOTIFICATION_FLAG, myNotify);
      break;
    case R.id.btn5:
      // 清除id为NOTIFICATION_FLAG的通知
      manager.cancel(NOTIFICATION_FLAG);
      // 清除所有的通知
      // manager.cancelAll();
      break;
    default:
      break;
    }
  }
}

再看主布局文件:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
  xmlns:tools="http://schemas.android.com/tools"
  android:layout_width="match_parent"
  android:layout_height="match_parent"
  android:orientation="vertical"
  tools:context=".MainActivity" >
  <Button
    android:id="@+id/btn1"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:onClick="notificationMethod"
    android:text="默认通知(已被抛弃,但是通用)" />
  <Button
    android:id="@+id/btn2"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:onClick="notificationMethod"
    android:text="默认通知(API11之后可用)" />
  <Button
    android:id="@+id/btn3"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:onClick="notificationMethod"
    android:text="默认通知(API16之后可用)" />
  <Button
    android:id="@+id/btn4"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:onClick="notificationMethod"
    android:text="自定义通知" />
  <Button
    android:id="@+id/btn5"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:onClick="notificationMethod"
    android:text="清除通知" />
</LinearLayout>

还有一个是:自定义通知的布局文件my_notification.xml,代码如下:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
  android:layout_width="match_parent"
  android:layout_height="wrap_content"
  android:background="#ffffff"
  android:orientation="vertical" >
  <TextView
    android:id="@+id/text_content"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:textSize="20sp" />
</LinearLayout>

希望本文所述对大家Android程序设计有所帮助。

(0)

相关推荐

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

    本想自己写一个的,但是看到这篇之后,我想还是转过来吧,实在是非常的详细: 在Android系统中,发一个状态栏通知还是很方便的.下面我们就来看一下,怎么发送状态栏通知,状态栏通知又有哪些参数可以设置? 首先,发送一个状态栏通知必须用到两个类:  NotificationManager . Notification. NotificationManager :  是状态栏通知的管理类,负责发通知.清楚通知等. NotificationManager 是一个系统Service,必须通过 getSys

  • android 通知Notification详解及实例代码

    android Notification实例详解 1.使用Builder模式来创建 2.必须要设置一个smallIcon,还可以设置setTicker 3.可以设置 setContentTitle,setContentInfo,setContentText,setWhen 4.可以设置setDefaults(闪屏,声音,震动),通过Notification设置flags(能不能被清除) 5.发送需要获取一个NotificationManager(getSystemService来获取);noti

  • Android中关于Notification及NotificationManger的详解

    Android状态栏提醒 在Android中提醒功能也可以用AlertDialog,但是我们要慎重的使用,因为当使用AlertDialog的时候,用户正在进行的操作将会被打断,因为当前焦点被AlertDialog得到.我们可以想像一下,当用户打游戏正爽的时候,这时候来了一条短信.如果这时候短信用AlertDialog提醒,用户必须先去处理这条提醒,从而才能继续游戏.用户可能会活活被气死.而使用Notification就不会带来这些麻烦事,用户完全可以打完游戏再去看这条短信.所以在开发中应根据实际

  • Android编程实现拦截短信并屏蔽系统Notification的方法

    本文实例讲述了Android编程实现拦截短信并屏蔽系统Notification的方法.分享给大家供大家参考,具体如下: 拦截短信有几个关键点: 1.android接收短信时是以广播的方式 2.程序只要在自己的Manifest.xml里加有"接收"SMS的权限 <uses-permission android:name="android.permission.RECEIVE_SMS"> </uses-permission> <uses-p

  • Android中Notification 提示对话框

    Notification,俗称通知,是一种具有全局效果的通知,它展示在屏幕的顶端,首先会表现为一个图标的形式,当用户向下滑动的时候,展示出通知具体的内容. 一.Notification用于状态栏显示通知的控件,在不同的设备上面Notification是不一样的 二.Notification的基本布局 元素组成: Icon/Photo:大图标 Tiltle/Name:标题 Message:内容消息 Timestamp:通知的时间,默认是系统发出的时间,也可以通过setWhen()来设置 secon

  • Android中通知Notification使用实例(振动、灯光、声音)

    本文实例讲解了通知Notification使用方法,此知识点就是用作通知的显示,包括振动.灯光.声音等效果,分享给大家供大家参考,具体内容如下 效果图: MainActivity: import java.io.File; import android.app.Activity; import android.app.Notification; import android.app.NotificationManager; import android.app.PendingIntent; im

  • Android界面 NotificationManager使用Bitmap做图标

    今天看到EOE问答里面有这"[Android 界面]NotificationManager 如何使用Bitmap做图标"这样一个问题,在论坛搜索也没有好的案例 特写一个简单的demo供大家参考 今天发布的是NotificationManager 使用Bitmap做图标 关键code 复制代码 代码如下: public void notification(int flag) { Notification notification = new Notification(); //设置sta

  • android notification 的总结分析

    分类 notification有以下几种: 1>普通notification 1.内容标题 2.大图标 3.内容 4.内容附加信息 5.小图标 6.时间 2>大布局Notification 图1 大布局notification是在android4.1以后才增加的,大布局notification与小布局notification只在'7'部分有区别,其它部分都一致.大布局notification只有在所有notification的最上 面时才会显示大布局,其它情况下显示小布局.你也可以用手指将其扩

  • Android中通过Notification&NotificationManager实现消息通知

    notification是一种让你的应用程序在没有开启情况下或在后台运行警示用户.它是看不见的程序组件(Broadcast Receiver,Service和不活跃的Activity)警示用户有需要注意的事件发生的最好途径. 1.新建一个android项目 我新建项目的 minSdkVersion="11",targetSdkVersion="19".也就是支持最低版本的3.0的. 2.习惯性地打开项目清单文件AndroidManifest.xml,添加一个权限:&

  • android中创建通知栏Notification代码实例

    ///// 第一步:获取NotificationManager NotificationManager nm = (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE); ///// 第二步:定义Notification Intent intent = new Intent(this, OtherActivity.class); //PendingIntent是待执行的Intent PendingIntent pi

  • 详解Android中Notification的使用方法

    在消息通知的时候,我们经常用到两个控件Notification和Toast.特别是重要的和需要长时间显示的信息,用Notification最合适不过了.他可以在顶部显示一个图标以标示有了新的通知,当我们拉下通知栏的时候,可以看到详细的通知内容.       最典型的应用就是未看短信和未接来电的显示,还有QQ微信,我们一看就知道有一个未接来电或者未看短信,收到QQ离线信息.同样,我们也可以自定义一个Notification来定义我们自己的程序想要传达的信息. Notification我把他分为两种

  • 详解Android中Notification通知提醒

    在消息通知时,我们经常用到两个组件Toast和Notification.特别是重要的和需要长时间显示的信息,用Notification就最 合适不过了.当有消息通知时,状态栏会显示通知的图标和文字,通过下拉状态栏,就可以看到通知信息了,Android这一创新性的UI组件赢得了用户的一 致好评,就连苹果也开始模仿了.今天我们就结合实例,探讨一下Notification具体的使用方法.  首先说明一下我们需要实现的功能是:在程序启动时,发出一个通知,这个通知在软件运行过程中一直存在,相当于qq的托盘

随机推荐