Notification通知栏
是显示在手机状态的消息,代表一种全局效果的通知
快速创建一个Notification的步骤简单可以分为以下四步:
第一步:通过getSystemService()方法得到NotificationManager对象;
第二步:对Notification的一些属性进行设置比如:内容,图标,标题,相应notification的动作进行处理等等;
第三步:通过NotificationManager对象的notify()方法来执行一个notification的快讯;
第四步:通过NotificationManager对象的cancel()方法来取消一个notificatioin的快讯;
示例:
布局:
1 <?xml version="1.0" encoding="utf-8"?> 2 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 3 android:layout_width="match_parent" 4 android:layout_height="match_parent" 5 android:orientation="vertical" > 6 7 <Button 8 android:id="@+id/notification_open" 9 android:layout_width="fill_parent" 10 android:layout_height="wrap_content" 11 android:text="打开通知栏" /> 12 13 <Button 14 android:id="@+id/notification_close" 15 android:layout_width="fill_parent" 16 android:layout_height="wrap_content" 17 android:text="取消通知栏" /> 18 19 </LinearLayout>
布局
JAVA文件:
1 package information; 2 3 4 5 import android.annotation.SuppressLint; 6 import android.app.Activity; 7 import android.app.Notification; 8 import android.app.Notification.Builder; 9 import android.app.NotificationManager; 10 import android.app.PendingIntent; 11 import android.content.Context; 12 import android.content.Intent; 13 import android.os.Bundle; 14 import android.view.View; 15 import android.view.View.OnClickListener; 16 import android.widget.Button; 17 18 import com.example.allcode.R; 19 20 public class Notification_text_one extends Activity implements OnClickListener{ 21 NotificationManager manger; //通知控制类 22 int notification_id; 23 private Button open; 24 private Button close; 25 @Override 26 protected void onCreate(Bundle savedInstanceState) { 27 // TODO Auto-generated method stub 28 super.onCreate(savedInstanceState); 29 setContentView(R.layout.notification); 30 31 open = (Button) findViewById(R.id.notification_open); 32 close = (Button) findViewById(R.id.notification_close); 33 //系统服务 34 manger = (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE); 35 36 open.setOnClickListener(this); 37 close.setOnClickListener(this); 38 } 39 @Override 40 public void onClick(View v) { 41 // TODO Auto-generated method stub 42 switch (v.getId()) { 43 case R.id.notification_open: //打开通知栏 44 sendNotification(); 45 46 break; 47 case R.id.notification_close: 48 manger.cancel(notification_id); //取消通知栏 49 50 break; 51 52 default: 53 break; 54 } 55 } 56 57 private void sendNotification(){ 58 Intent intent = new Intent(this,AlertDialog_text.class); 59 60 PendingIntent pi = PendingIntent.getActivity(this, 0, intent, 0); 61 Builder builder = new Notification.Builder(this); 62 builder.setSmallIcon(R.drawable.icon_72); //设置通知栏图标 63 builder.setTicker("Hello"); //设置通知栏提示 64 builder.setWhen(System.currentTimeMillis());//设置时间 65 builder.setContentTitle("这是通知栏标题");//通知栏标题 66 builder.setContentText("这里是通知栏内容");//通知栏内容 67 builder.setContentIntent(pi);//设置点击后的意图 68 //效果,需要添加相应的权限 69 builder.setDefaults(Notification.DEFAULT_SOUND);//设置提示声音 70 builder.setDefaults(Notification.DEFAULT_LIGHTS);//设置指示灯 71 builder.setDefaults(Notification.DEFAULT_VIBRATE);//设置震动 72 //builder.setDefaults(Notification.DEFAULT_ALL);//设置全部效果 //权限 <uses-permission android:name="android.permission.VIBRATE" /> 73 //Notification notification = builder.build();//安卓版本4.1及以上 74 Notification notification = builder.getNotification();//安卓版本4.1以下 75 manger.notify(notification_id,notification); 76 } 77 }
PendingIntent.getActivity(this, 0, intent, 0);参数:第二个: id第四个:
设置flag位
FLAG_AUTO_CANCEL 该通知能被状态栏的清除按钮给清除掉
FLAG_NO_CLEAR 该通知能被状态栏的清除按钮给清除掉
FLAG_ONGOING_EVENT 通知放置在正在运行
FLAG_INSISTENT 是否一直进行,比如音乐一直播放,知道用户响应
1 notification.flags = Notification.FLAG_NO_CLEAR; // 点击清除按钮时就会清除消息通知,但是点击通知栏的通知时不会消失 2 notification.flags = Notification.FLAG_ONGOING_EVENT; // 点击清除按钮不会清除消息通知,可以用来表示在正在运行 3 notification.flags |= Notification.FLAG_AUTO_CANCEL; // 点击清除按钮或点击通知后会自动消失 4 notification.flags |= Notification.FLAG_INSISTENT; // 一直进行,比如音乐一直播放,知道用户响应
效果图:
时间: 2024-10-13 05:58:01