欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  移动技术

详解Android中Notification的使用方法

程序员文章站 2023-12-19 14:56:10
      在消息通知的时候,我们经常用到两个控件notification和toast。特别是重要的和需要长时间显示的信息...

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

notification我把他分为两种,一种是默认的显示方式,另一种是自定义的,今天为大家讲述默认的显示方式
1、程序框架结构图如下

详解Android中Notification的使用方法

2、布局文件 main.xml 源码如下

<?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:gravity="center" 
 android:textcolor="#eee" 
 android:textstyle="bold" 
 android:textsize="25sp" 
 android:text="notificationdemo实例" /> 
<button 
 android:id="@+id/btnsend" 
 android:text="send notification" 
 android:layout_width="wrap_content" 
 android:layout_height="wrap_content" 
 android:layout_gravity="center"/>  
</linearlayout> 

3、mainactivity.java源码如下:

package com.andyidea.notification; 
 
import android.app.activity; 
import android.content.intent; 
import android.os.bundle; 
import android.view.view; 
import android.widget.button; 
 
public class mainactivity extends activity { 
 private button btnsend; 
  
 //定义broadcastreceiver的action 
 private static final string notificationdemo_action = "com.andyidea.notification.notificationdemo_action"; 
  
 /** called when the activity is first created. */ 
 @override 
 public void oncreate(bundle savedinstancestate) { 
  super.oncreate(savedinstancestate); 
  setcontentview(r.layout.main); 
   
  btnsend = (button)findviewbyid(r.id.btnsend); 
  btnsend.setonclicklistener(new view.onclicklistener() { 
   @override 
   public void onclick(view v) { 
    intent intent = new intent(); 
    intent.setaction(notificationdemo_action); 
    sendbroadcast(intent); 
   } 
  }); 
 } 
  
} 

4、布局文件 secondlayou.xml 源码如下:

<?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:gravity="center" 
 android:textcolor="#eee" 
 android:textstyle="bold" 
 android:textsize="25sp" 
 android:text="显示通知界面" /> 
<button 
 android:id="@+id/btncancel" 
 android:text="cancel notification" 
 android:layout_width="wrap_content" 
 android:layout_height="wrap_content" 
 android:layout_gravity="center" />  
</linearlayout> 

5、secondactivity.java源码如下:

package com.andyidea.notification; 
 
import android.app.activity; 
import android.app.notification; 
import android.app.notificationmanager; 
import android.app.pendingintent; 
import android.content.intent; 
import android.os.bundle; 
import android.view.view; 
import android.widget.button; 
 
public class secondactivity extends activity { 
 
 private button btncancel; 
 //声明notification 
 private notification notification; 
 //声明notificationmanager 
 private notificationmanager mnotification; 
 //标识notification的id 
 private static final int id = 1; 
  
 @override 
 protected void oncreate(bundle savedinstancestate) { 
  super.oncreate(savedinstancestate); 
  setcontentview(r.layout.secondlayout); 
   
  btncancel = (button)findviewbyid(r.id.btncancel); 
  //怎样获得notificationmanager的实例? 
  string service = notification_service; 
  mnotification = (notificationmanager)getsystemservice(service); 
   
  //获得notification的实例 
  notification = new notification(); 
   
  //设置该图标 会在状态栏显示 
  int icon = notification.icon = android.r.drawable.stat_sys_phone_call; 
  //设置提示信息 
  string tickertext = "test notification"; 
  //设置显示时间 
  long when = system.currenttimemillis(); 
  notification.icon = icon; 
  notification.tickertext = tickertext; 
  notification.when = when; 
   
  intent intent = new intent(this, mainactivity.class); 
  pendingintent pi = pendingintent.getactivity(this, 0, intent, 0); 
  notification.setlatesteventinfo(this, "消息", "sms android", pi); 
  mnotification.notify(id, notification); 
   
  btncancel.setonclicklistener(new view.onclicklistener() { 
   @override 
   public void onclick(view v) { 
    mnotification.cancel(id); //--->取消通知 
   } 
  }); 
 } 
  
} 

6、notificationreceiver.java源码如下:

package com.andyidea.notification; 
 
import com.andyidea.notification.secondactivity; 
 
import android.content.broadcastreceiver; 
import android.content.context; 
import android.content.intent; 
 
public class notificationreceiver extends broadcastreceiver { 
 
 @override 
 public void onreceive(context context, intent intent) { 
  //实例化intent 
  intent i = new intent(); 
  //在新任务中启动activity 
  i.setflags(intent.flag_activity_new_task); 
  //设置intent启动的组件名称 
  i.setclass(context, secondactivity.class); 
  //启动activity,显示通知 
  context.startactivity(i); 
 } 
 
} 

7、程序运行效果如下:

详解Android中Notification的使用方法

以上就是针对android中notification使用方法进行的详细介绍,希望对大家的学习有所启发,帮助大家更好地学习android软件编程。

上一篇:

下一篇: