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

notification是一种让你的应用程序在没有开启情况下或在后台运行警示用户。它是看不见的程序组件(Broadcast Receiver,Service和不活跃的Activity)警示用户有需要注意的事件发生的最好途径。

  1、新建一个android项目

    我新建项目的 minSdkVersion="11",targetSdkVersion="19"。也就是支持最低版本的3.0的。

  2、习惯性地打开项目清单文件AndroidManifest.xml,添加一个权限:<uses-permission android:name="android.permission.VIBRATE"/> 不添加不行的。

  3、在布局activity_main.xml中添加几个按钮,样子就大概这样,垂直排版的LinearLayout

具体代码

<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:paddingBottom="@dimen/activity_vertical_margin" android:paddingLeft="@dimen/activity_horizontal_margin" android:paddingRight="@dimen/activity_horizontal_margin" android:paddingTop="@dimen/activity_vertical_margin" android:orientation="vertical" tools:context=".MainActivity" > <Button android:id="@+id/btn_01" android:layout_width="match_parent" android:layout_height="wrap_content" android:text="3.0以前版本的notification,用新的吧" android:onClick="click" /> <Button android:id="@+id/btn_02" android:layout_width="match_parent" android:layout_height="wrap_content" android:text="大视图文本通知" android:onClick="click" /> <Button android:id="@+id/btn_03" android:layout_width="match_parent" android:layout_height="wrap_content" android:text="大视图图片通知" android:onClick="click" /> <Button android:id="@+id/btn_04" android:layout_width="match_parent" android:layout_height="wrap_content" android:text="进度条通知" android:onClick="click" /> </LinearLayout>

  

4、MainActivity中的代码:

package com.xin.day__notificationdemo; import java.util.Timer; import java.util.TimerTask; import android.app.Activity; import android.app.Notification; import android.app.NotificationManager; import android.app.PendingIntent; import android.content.Intent; import android.graphics.BitmapFactory; import android.os.Bundle; import android.support.v.app.NotificationCompat; import android.support.v.app.NotificationCompat.BigPictureStyle; import android.support.v.app.NotificationCompat.BigTextStyle; import android.support.v.app.NotificationCompat.Builder; import android.util.Log; import android.view.View; public class MainActivity extends Activity { //通知的唯一标识,在一个应用程序中不同的通知要区别开来 private static final int NO = x; private static final int NO = x; private static final int NO = x; private static final int NO = x; //进度条要用 private int progress = ; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); } //click方法,和xml文件中的各个按钮的onClick属性的值要一致 public void click(View view) { //创建NotificationManager final NotificationManager manager = (NotificationManager) getSystemService(NOTIFICATION_SERVICE); //用switch语句控制四个控件 switch (view.getId()) { case R.id.btn_: { Notification notification = new Notification(); notification.icon = R.drawable.ic_launcher; notification.tickerText = "有消息了。。。"; Intent intent = new Intent(this, MainActivity.class); PendingIntent pendingIntent = PendingIntent.getActivity(this, , intent, PendingIntent.FLAG_UPDATE_CURRENT); notification.setLatestEventInfo(this, ".以前的通知", "试试而已", pendingIntent); notification.when = System.currentTimeMillis(); notification.defaults = Notification.DEFAULT_ALL; notification.flags = Notification.FLAG_AUTO_CANCEL; notification.number = ; notification.vibrate = new long[]{, }; manager.notify(NO, notification); } break; case R.id.btn_:{ //大视图文本通知 //创建消息构造器,在扩展包 NotificationCompat.Builder builder = new NotificationCompat.Builder(this); //设置当有消息是的提示,图标和提示文字 builder.setSmallIcon(R.drawable.ic_launcher).setTicker("有新消息了"); //需要样式 BigTextStyle style = new BigTextStyle(); style.setBigContentTitle("上课通知");//通知的标题 style.bigText("今天下午要在综B上jsp");//通知的文本内容 //大视图文本具体内容 style.setSummaryText("这是正常的课程安排,请各位同学按时上课"); builder.setStyle(style); //显示消息到达的时间,这里设置当前时间 builder.setWhen(System.currentTimeMillis()); //获取一个通知对象 Notification notification = builder.build(); notification.flags = Notification.FLAG_AUTO_CANCEL; //发送(显示)通知 //notify()第一个参数id An identifier for this notification unique within your application //get?意思说,这个通知在你的应用程序中唯一的标识符 manager.notify(NO, notification); } break; case R.id.btn_:{ //大视图图片通知 NotificationCompat.Builder builderPic = new Builder(this); builderPic.setSmallIcon(R.drawable.ic_launcher).setTicker("新浪体育提醒"); //进行设置 BigPictureStyle pictureStyle = new BigPictureStyle(); pictureStyle.setBigContentTitle("新浪体育 快船VS骑士 "); pictureStyle.bigPicture(BitmapFactory.decodeResource(getResources(), R.drawable.ic_game)); pictureStyle.setSummaryText(" 快船VS骑士 天王山之战!!!");//不要在意文字 //设置样式 builderPic.setStyle(pictureStyle); //设置显示的时间 builderPic.setWhen(System.currentTimeMillis()); Notification notification = pictureStyle.build(); notification.flags = Notification.FLAG_AUTO_CANCEL; // manager.notify(NO, notification); } break; case R.id.btn_:{ //进度条通知 final NotificationCompat.Builder builderProgress = new NotificationCompat.Builder(this); builderProgress.setSmallIcon(R.drawable.ic_launcher).setTicker("进度条通知"); builderProgress.setProgress(, progress, false); final Notification notification = builderProgress.build(); //发送一个通知 manager.notify(NO, notification); //创建一个计时器 Timer timer = new Timer(); timer.schedule(new TimerTask(){ @Override public void run() { Log.i("progress",progress+""); while(progress <= ){ progress ++; try { Thread.sleep(); } catch (InterruptedException e) { // TODO Auto-generated catch block e.printStackTrace(); } //更新进度条 builderProgress.setProgress(, progress, false); //再次通知 manager.notify(NO, builderProgress.build()); } //计时器退出 this.cancel(); //进度条退出 manager.cancel(NO); return;//结束方法 } }, ); } break; default: break; } } }

5、运行:我的虚拟机版本是4.0的(api19),按住通知左(右)滑动就可以让通知小时了。

效果如下:

时间: 2024-10-26 18:27:39

Android中通过Notification&NotificationManager实现消息通知的相关文章

Android中通过Notification&amp;NotificationManager实现消息通知_Android

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

Android中使用Notification实现状态栏的通知

在使用手机时,当有未接来电或者新短消息时,手机会给出响应的提示信息,这些提示信息通常会显示到手机屏幕的状态栏上. Android也提供了用于处理这些信息的类,它们是Notification和NotificationManager.其中,Notification代表的是具有全局效果的通知,而NotificationManager则是用于发送Notification通知的系统服务. 使用Notification和NotificationManager类发送和显示通知也比较简单,大致可以分为以下四个步

Android中new Notification创建实例的最佳方法_Android

目前 Android 已经不推荐使用下列方式创建 Notification实例: Notification notification = new Notification(R.drawable.ic_launcher,"This is ticker text",System.currentTimeMillis()); 最好采用下列方式: Notification notification = new Notification.Builder(this) .setContentTitle

Android中new Notification创建实例的最佳方法

目前 Android 已经不推荐使用下列方式创建 Notification实例: Notification notification = new Notification(R.drawable.ic_launcher,"This is ticker text",System.currentTimeMillis()); 最好采用下列方式: Notification notification = new Notification.Builder(this) .setContentTitle

Android中关于Notification及NotificationManger的详解_Android

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

详解Android中使用Notification实现进度通知栏(示例三)_Android

我们在使用APP的过程中,软件会偶尔提示我们进行版本更新,我们点击确认更新后,会在通知栏显示下载更新进度(已知长度的进度条)以及安装情况(不确定进度条),这就是我们今天要实现的功能.实现效果如下: 在代码实现功能前,我们先解释进度条的两种状态: (1)显示一个已知长度的进度条指示器(Displaying a fixed-duration progress indicator) 为了能够显示一个确定的进度条,通过调用setProgress() setProgress(max, progress,

Android中使用socket通信实现消息推送的方法详解_Android

原理最近用socket写了一个消息推送的demo,在这里和大家分享一下. 主要实现了:一台手机向另外一台手机发送消息,这两台手机可以随时自由发送文本消息进行通信,类似我们常用的QQ. 效果图: 原理:手机通过socket发送消息到服务器,服务器每接收到一条消息之后,都会把这条消息放进一个messageList里面,服务器会不停地检测messageList是否含有消息,如果有的话就会根据messageList里面item的数据,推送到相应的另一端手机上面. 下面简单画了一个图来说明这个原理: 演示

Android中使用socket通信实现消息推送的方法详解

原理 最近用socket写了一个消息推送的demo,在这里和大家分享一下. 主要实现了:一台手机向另外一台手机发送消息,这两台手机可以随时自由发送文本消息进行通信,类似我们常用的QQ. 效果图: 原理:手机通过socket发送消息到服务器,服务器每接收到一条消息之后,都会把这条消息放进一个messageList里面,服务器会不停地检测messageList是否含有消息,如果有的话就会根据messageList里面item的数据,推送到相应的另一端手机上面. 下面简单画了一个图来说明这个原理: 演

详解Android中Notification通知提醒_Android

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