关闭

Android-Notification (通知实现)

标签: Notification通知NotificationManagerContext.NOTIFICATION
117人阅读 评论(0) 收藏 举报
分类:

                             Android-Notification (通知实现)

 1、通知实现步骤

       在使用手机时,当有未接来电或者新短消息时,手机会给出响应的提示信息,这些提示信息通常会显示到手机屏幕的状态栏上。

Android也提供了用于处理这些信息的类,它们是Notification和NotificationManager。其中,Notification代表的是具有全局效果的通知,而NotificationManager则是用于发送Notification通知的系统服务。

使用Notification和NotificationManager类发送和显示通知也比较简单,大致可以分为以下四个步骤

(1)调用getSystemService() 方法获取系统的NotificationManager服务

(2)创建一个Notification对象,并为其设置各种属性

(3)为Notification对象设置事件信息

(4)通过NotificationManager类的notify()方法发送Notification通知

下面通过一个实例说明和使用Notification在状态栏上显示通知

 2、基本实现

 2.1效果图

      手机 小米4 ,是有声音和震动的,这里没办法展示;
                                                               
 2.2 布局实现

       两个按钮:

  1. <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"  
  2.     xmlns:tools="http://schemas.android.com/tools"  
  3.     android:layout_width="match_parent"  
  4.     android:layout_height="match_parent"  
  5.     tools:context="${relativePackage}.${activityClass}" >  
  6.   
  7.     <TextView  
  8.         android:id="@+id/textView1"  
  9.         android:layout_width="wrap_content"  
  10.         android:layout_height="wrap_content"  
  11.         android:text="@string/hello_world" />  
  12.   
  13.     <Button  
  14.         android:id="@+id/button1"  
  15.         android:layout_width="wrap_content"  
  16.         android:layout_height="wrap_content"  
  17.         android:layout_alignParentLeft="true"  
  18.         android:layout_alignParentRight="true"  
  19.         android:layout_below="@+id/textView1"  
  20.         android:layout_marginTop="16dp"  
  21.         android:text="发送通知" />  
  22.   
  23.     <Button  
  24.         android:id="@+id/button2"  
  25.         android:layout_width="wrap_content"  
  26.         android:layout_height="wrap_content"  
  27.         android:layout_alignParentLeft="true"  
  28.         android:layout_alignParentRight="true"  
  29.         android:layout_below="@+id/button1"  
  30.         android:text="取消通知" />  
  31.   
  32. </RelativeLayout>  


 2.3 代码实现

  1. package com.example.studydemo7;  
  2.   
  3. import android.annotation.SuppressLint;  
  4. import android.app.Activity;  
  5. import android.app.Notification;  
  6. import android.app.Notification.Builder;  
  7. import android.app.NotificationManager;  
  8. import android.app.PendingIntent;  
  9. import android.content.Context;  
  10. import android.content.Intent;  
  11. import android.os.Bundle;  
  12. import android.view.Menu;  
  13. import android.view.MenuItem;  
  14. import android.view.View;  
  15. import android.view.View.OnClickListener;  
  16. import android.widget.Button;  
  17.   
  18. public class MainActivity extends Activity {  
  19.   
  20.     private Button button1,button2;  
  21.       
  22.       
  23.     //通知 是通过 NotificationManager 来管理的  
  24.     private NotificationManager manager;  
  25.       
  26.     private final int NOTIFICATION_ID=1;  
  27.       
  28.     @Override  
  29.     protected void onCreate(Bundle savedInstanceState) {  
  30.         super.onCreate(savedInstanceState);  
  31.         setContentView(R.layout.activity_main);  
  32.           
  33.         //初始化 得到 通知 系统服务  
  34.         manager=(NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE);  
  35.           
  36.         button1=(Button) findViewById(R.id.button1);  
  37.         button2=(Button) findViewById(R.id.button2);  
  38.         button1.setOnClickListener(new button1ClickListener());  
  39.         button2.setOnClickListener(new button2ClickListener());  
  40.           
  41.     }  
  42.       
  43.     class button1ClickListener implements OnClickListener{  
  44.   
  45.         @Override  
  46.         public void onClick(View v) {  
  47.             //发送通知  
  48.             sendNotification();  
  49.         }  
  50.           
  51.     }  
  52.     class button2ClickListener implements OnClickListener{  
  53.   
  54.         @Override  
  55.         public void onClick(View v) {  
  56.             //取消通知  
  57.             manager.cancel(NOTIFICATION_ID);  
  58.         }  
  59.           
  60.     }  
  61.       
  62.     @SuppressLint("NewApi")  
  63.     private void sendNotification(){  
  64.           
  65.         //通过 Builder 来创建  Notification 的  
  66.         Builder builder=new Notification.Builder(this);  
  67.         //设置 通知 图标  
  68.         builder.setSmallIcon(R.drawable.ic_launcher);  
  69.         //设置 通知 显示标题  
  70.         builder.setTicker("Hi");  
  71.         //设置 通知栏 标题  
  72.         builder.setContentTitle("StudyDemo");  
  73.         //设置 通知内容  
  74.         builder.setContentText("StudyDemo 需要更新了!"); 
  75.         //builder.setWhen(System.currentTimeMillis());//设置通知时间

  76.         //设置 提醒 声音/震动/指示灯  
  77.         builder.setDefaults(Notification.DEFAULT_ALL);  
  78.         //builder.setDefaults(Notification.DEFAULT_LIGHTS);//设置指示灯         
  79.         //builder.setDefaults(Notification.DEFAULT_SOUND);//设置提示声音
  80.         //builder.setDefaults(Notification.DEFAULT_VIBRATE);//设置震动

  81.         //设置 点击后的跳转 通过 pendingIntent 实现  
  82.         Intent intent=new Intent(this,MainActivity.class);  
  83.         PendingIntent pendingIntent=PendingIntent.getActivity(this,0, intent,0);  
  84.         builder.setContentIntent(pendingIntent);  
  85.           
  86.         //创建 通知   
  87.         //安卓4.1 及其 以上使用 build()方法 ,以下的使用  builder.getNotification();  
  88.         Notification notification=builder.build();  
  89.         manager.notify(NOTIFICATION_ID, notification);  
  90.     }  
  91.       
  92.       
  93.       
  94.       
  95.       
  96. }  
上面代码中设置的指示灯和震动,由于程序中要访问系统的指示灯和振动器 所以要在AndroidManifest.xml中声明使用权限

<uses-permission android:name="android.permission.VIBRATE">

<uses-permission android:name="android.permission.FLASHLIGHT"></uses-permission></uses-permission>

 3.demo 免积分下载

http://download.csdn.net/detail/lablenet/9048745
1
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:27705次
    • 积分:841
    • 等级:
    • 排名:千里之外
    • 原创:51篇
    • 转载:38篇
    • 译文:0篇
    • 评论:0条
    文章分类