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>

感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!

(0)

相关推荐

  • Android实现Service下载文件,Notification显示下载进度的示例

    先放个gif..最终效果如果: 主要演示了Android从服务器下载文件,调用Notification显示下载进度,并且在下载完毕以后点击通知会跳转到安装APK的界面,演示是在真实的网络环境中使用真实的URL进行演示,来看看代码: MainActivity代码非常简单,就是启动一个Service: public class MainActivity extends AppCompatActivity { String download_url="http://shouji.360tpcdn.co

  • Android编程使用Service实现Notification定时发送功能示例

    本文实例讲述了Android编程使用Service实现Notification定时发送功能.分享给大家供大家参考,具体如下: /** * 通过启动或停止服务来管理通知功能 * * @description: * @author ldm * @date 2016-4-29 上午9:15:15 */ public class NotifyControlActivity extends Activity { private Button notifyStart;// 启动通知服务 private Bu

  • Android 使用AlarmManager和NotificationManager来实现闹钟和通知栏

    实现闹钟运行的效果如下: 通知栏的运行后效果图如下: 布局文件(activity_main.xml) <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools&qu

  • Android Notification 使用方法详解

    Android Notification 使用方法详解 用TaskStackBuilder来获取PendingIntent处理点击跳转到别的Activity,首先是用一般的PendingIntent来进行跳转. mBuilder = new NotificationCompat.Builder(this).setContent(view) .setSmallIcon(R.drawable.icon).setTicker("新资讯") .setWhen(System.currentTim

  • Android Notification使用方法详解

    Android  Notification使用详解 Notification 核心代码(链式调用):适用于Android 4.0以上(不兼容低版本) Notification noti = new Notification.Builder(this) .setContentTitle("标题名称") .setContentText("标题里的内容") .setSmallIcon(R.drawable.new_mail) .setLargeIcon(BitmapFac

  • android使用NotificationListenerService监听通知栏消息

    NotificationListenerService是通过系统调起的服务,在应用发起通知时,系统会将通知的应用,动作和信息回调给NotificationListenerService.但使用之前需要引导用户进行授权.使用NotificationListenerService一般需要下面三个步骤. 注册服务 首先需要在AndroidManifest.xml对service进行注册. <service android:name=".NotificationCollectorService&q

  • Android 通知使用权(NotificationListenerService)的使用

    Android  通知使用权(NotificationListenerService)的使用 简介 当下不少第三方安全APP都有消息管理功能或者叫消息盒子功能,它们能管理过滤系统中的一些无用消息,使得消息栏更清爽干净.其实此功能的实现便是使用了Android中提供的通知使用权权限.Android4.3后加入了通知使用权NotificationListenerService,就是说当你开发的APP拥有此权限后便可以监听当前系统的通知的变化,在Android4.4后还扩展了可以获取通知详情信息.下面

  • Android Notification使用方法总结

    Android Notification使用方法总结 一. 基本使用 1.构造notification NotificationCompat.Builder mBuilder = new NotificationCompat.Builder(appContext) .setSmallIcon(appContext.getApplicationInfo().icon) .setWhen(System.currentTimeMillis()) .setAutoCancel(true)//当点击通知的

  • Android Notification的多种用法总结

    Android Notification的多种用法总结 我们在用手机的时候,如果来了短信,而我们没有点击查看的话,是不是在手机的最上边的状态栏里有一个短信的小图标提示啊?你是不是也想实现这种功能呢?今天的Notification就是解决这个问题的. 我们也知道Android系统也是在不断升级的,有关Notification的用法也就有很多种,有的方法已经被android抛弃了,现在我实现了三种不同的方法,并适应不同的android版本.现在我就把代码公布出来,我喜欢把解释写在代码中,在这里我就不

  • Android之Notification的多种用法实例

    我们在用手机的时候,如果来了短信,而我们没有点击查看的话,是不是在手机的最上边的状态栏里有一个短信的小图标提示啊?你是不是也想实现这种功能呢?今天的Notification就是解决这个问题的. 我们也知道Android系统也是在不断升级的,有关Notification的用法也就有很多种,有的方法已经被android抛弃了,现在我实现了三种不同的方法,并适应不同的android版本.现在我就把代码公布出来,我喜欢把解释写在代码中,在这里我就不多说了, 先看效果图: 再看代码,主要的代码如下: pa

  • Android Notification.Builder通知案例分享

    随着Android系统的不断升级,相关Notification的用法有很多种,有的方法可能已经被android抛弃了,下面为大家分享一下个人如何实现Android Notification通知小案例源代码,供大家参考. Android Notification.Builder通知小案例,具体代码示例如下: package com.example.day6ke; import android.app.Notification; import android.app.NotificationMana

  • Android 通知的基本用法示例代码

    写android通知的时候发现Notification的setLatestEventInfo被弃用,于是搜素并整理了一下新的android通知的基本用法. 一.获取NotificationManager实例 NotificationManager notificationManager = (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE); 二.创建Notification实例 在这里需要根据project的

  • Android Notification通知解析

    Notification是显示在手机状态栏的通知,Notification通知是具有全局性的通知,一般通过NotificationManager来进行管理. 一般运用Notification的步骤如下: 1.调用getSysytemService(NOTIFICATION_SERVICE)来获取系统的NotificationManager,进行Notification的发送和回收 2.通过构造器建立一个Notification 3.为Notification set各种属性,然后builder(

  • Android开发之DialogFragment用法实例总结

    本文实例讲述了Android开发之DialogFragment用法.分享给大家供大家参考,具体如下: 背景 Android 官方推荐使用 DialogFragment 来代替 Dialog ,可以让它具有更高的可复用性(降低耦合)和更好的便利性(很好的处理屏幕翻转的情况). 而创建 DialogFragment 有两种方式: 1. 覆写其 onCreateDialog 方法 - ① 2. 覆写其 onCreateView 方法 - ② 虽然这两种方式都能实现相同的效果,但是它们各有自己适合的应用

  • Sort()函数的多种用法

    sort() 方法用于对数组的元素进行排序.包含于头文件algorithm 语法 arrayObject.sort(sortby) 参数 描述 sortby 可选.规定排序顺序.必须是函数. 返回值 对数组的引用.请注意,数组在原数组上进行排序,不生成副本. 一.默认情况 在默认情况下, sort() 方法按升序排列数组项.为了实现排序, sort() 方法会调用每个数组项的 toString() 转型方法,然后比较得到的字符串,已确定如何排序.如下: var values = ["orange

  • Android中Intent习惯用法

    Android中的Intent是一个非常重要的类,如果对Intent不是特别了解,可以参见<详解Android中Intent的使用方法>.如果对Intent Filter不是特别了解,可以参见<详解Android中Intent对象与Intent Filter过滤匹配过程>. 本文着重讲一下Android中一些常见的Intent的习惯用法,比如如何通过Intent发送短信.发送邮件.启动摄像机拍照录视频.设置闹铃.打开WIFI设置界面等等. 限于篇幅,本文分为上下两篇,这是上篇. 发

  • Android开发之Service用法实例

    本文实例讲述了Android开发之Service用法.分享给大家供大家参考.具体分析如下: Service是一个生命周期较长而且没有界面的程序. 下面通过一个播放mp3的例子来学习. 先看MainActivity.java package com.example.servicetest; import android.app.Activity; import android.content.Intent; import android.os.Bundle; import android.view

  • Android开发之BroadcastReceiver用法实例分析

    本文实例讲述了Android开发中BroadcastReceiver用法.分享给大家供大家参考.具体分析如下: 在Android系统中,广播(Broadcast)是在组件之间传播数据(Intent)的一种机制. Braodcast Receiver顾名思义就是广播接收器,它和事件处理机制类似,但是事件处理机制是程序组件级别的(比如:按钮的单击事件),而广播事件处理机制是系统级别的.我们可以用Intent来启动一个组件,也可以用sendBroadcast()方法发起一个系统级别的事件广播来传递消息

随机推荐