Android之Notification的多种用法
来源:互联网 发布:php urldecode解码 编辑:程序博客网 时间:2024/06/05 15:44
1.实现的功能
默认通知(已经废弃)
默认通知(API 11以后可用)
默认通知(API 16以后可用)
自定义通知
清除通知
2.主要代码
package demo.xzy.qh.com.notificationdemo;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.Button;import android.widget.RemoteViews;/** * 通知的用法 */public class MainActivity extends Activity implements View.OnClickListener { private static final int NOTIFICATION_FLAG = 1; private Button mButton1, mButton2, mButton3, mButton4, mButton5; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); initView(); initListener(); } private void initView() { mButton1 = (Button) findViewById(R.id.btn1); mButton2 = (Button) findViewById(R.id.btn2); mButton3 = (Button) findViewById(R.id.btn3); mButton4 = (Button) findViewById(R.id.btn4); mButton5 = (Button) findViewById(R.id.btn5); } private void initListener() { mButton1.setOnClickListener(this); mButton2.setOnClickListener(this); mButton3.setOnClickListener(this); mButton4.setOnClickListener(this); mButton5.setOnClickListener(this); } @Override public void onClick(View v) { /** * 在Android进行通知处理,首先需要从系统那里获得通知管理器NotificationManager,它是一个系统Service * */ NotificationManager manager = (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE); switch (v.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.mipmap.ic_launcher; notify1.tickerText = "TickerText:您有新短消息,请注意查收!"; notify1.when = System.currentTimeMillis(); /** * compileSdkVersion <=22时可用,compileSdkVersion>=23时此方法被remove * */ notify1.setLatestEventInfo(this, "Notification Title", "This is the notification message", pendingIntent); /** *设置右下角角标数字 * */ notify1.number = 1; /** * FLAG_AUTO_CANCEL表明当通知被用户点击时,通知将被清除。 * */ notify1.flags |= Notification.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) /** * 设置状态栏中的小图片,尺寸一般建议在24×24,这个图片同样也是在下拉状态栏中所显示, * 如果在那里需要更换更大的图片,可以使用setLargeIcon(Bitmap/icon) * */ .setSmallIcon(R.mipmap.ic_launcher) /** * 设置在statusbar上显示的提示文字 * * **/ .setTicker("TickerText:" + "您有新短消息,请注意查收!")// /** * * 设置在下拉statusbar后Activity,本例子中的NotififyMessage的TextView中显示的标题 * */ .setContentTitle("Notification Title") /** * TextView中显示的详细内容 * */ .setContentText("This is the notification message") /** * 关联PendingIntent * */ .setContentIntent(pendingIntent2) /** * 在TextView的右方显示的数字,可放大图片看,在最右侧。 * 这个number同时也起到一个序列号的作用,如果多个触发多个通知(同一ID),可以指定显示哪一个。 * */ .setNumber(1) /** * 需要注意build()是在API level * 16级之后增加的,在API11中可以使用getNotificatin()来代替 * **/ .getNotification(); 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.mipmap.ic_launcher) .setTicker("TickerText:" + "您有新短消息,请注意查收!") .setContentTitle("Notification Title") .setContentText("This is the notification message") /** * 需要注意build()是在API level16及之后增加的,API11可以使用getNotificatin()来替代 * **/ .setContentIntent(pendingIntent3).setNumber(1).build(); /** * FLAG_AUTO_CANCEL表明当通知被用户点击时,通知将被清除。 * **/ notify3.flags |= Notification.FLAG_AUTO_CANCEL; /** * 步骤4:通过通知管理器来发起通知。如果id不同,则每click,在status状态栏那里增加一个提示 * **/ manager.notify(NOTIFICATION_FLAG, notify3); break; /** * 自定义通知 * **/ case R.id.btn4: /** * * Notification myNotify = new Notification(R.drawable.message, * "自定义通知:您有新短信息了,请注意查收!", System.currentTimeMillis()); * **/ Notification myNotify = new Notification(); myNotify.icon = R.mipmap.ic_launcher; 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, PendingIntent.FLAG_ONE_SHOT); 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; } }}
其中主布局中为线性布局,包含5个按钮,自定义通知的布局仅为测试使用,也比较简单,为线性布局中包含一个TextView
自定义通知布局为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>
3.参考
参考博文http://blog.csdn.net/loongggdroid/article/details/17616509
并修正和完善了部分注释,使得阅读起来更加流畅。
阅读全文
2 0
- Android之Notification的多种用法
- Android之Notification的多种用法
- Android之Notification的多种用法
- Android通知之Notification的多种用法
- Android之Notification的多种用法
- Android之Notification的多种用法
- (转)Android之Notification的多种用法
- Android之Notification的多种用法
- Android之Notification的多种用法
- Android之Notification的多种用法
- Android之Notification的多种用法
- [置顶] Android之Notification的多种用法
- Android之Notification的多种用法
- Android之Notification的多种用法
- Android之Notification的多种用法
- [转载]Android之Notification的多种用法
- Android之Notification的多种用法
- Android Notification的多种用法
- C++程序抛出异常后执行顺序
- viewpager_frament_httpconnection_xlistview+双条目加载
- python实现kubernetes生成Excel报表并且Email
- 约瑟夫问题(Josephus)链表实现
- 心累
- Android之Notification的多种用法
- mysql5.7.17解压版安装
- 负载均衡(Load Balancing)学习笔记一
- (十三)redis 复制(Replication)
- java jvm 内存调优几个设置的一些背景知识
- hadoop2.74+zookeeper3.4.10+hbase1.2.6完全分布式HA集群搭建
- HDU-2222-AC自动机
- 【职坐标】SSM框架整合
- spring是什么?