Android开发之Notification 通知栏
来源:互联网 发布:mac彻底卸载office 编辑:程序博客网 时间:2024/06/10 19:19
首先我们来介绍一下通知(Notification)是Android系统常用的一种通知方式,当手机有未接来电时或者来短信的时候,Android设备的顶部状态栏就会有提示的小图标。当下拉状态栏时可以查看这些快讯。
public class MainActivity extends Activity { private static final int NOTIFICATION_FLAG = 1; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); } @SuppressLint("NewApi") public void notificationMethod(View view) { /** * 在Android进行通知处理,首先需要重系统哪里获得通知管理器NotificationManager,它是一个系统Service。 */ NotificationManager manager = (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE); switch (view.getId()) { /** * 默认通知,这个方式被Android抛弃了,但是如果要做低版本的设置兼容是可以用的 */ 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.logo, * "TickerText:" + "您有新短消息,请注意查收!", System.currentTimeMillis()); */ Notification notify1 = new Notification(); notify1.icon = R.drawable.logo; notify1.tickerText = "TickerText:您有新短消息,请注意查收!"; notify1.when = System.currentTimeMillis(); notify1.setLatestEventInfo(this, "Notification Title", "This is the notification message", pendingIntent); notify1.number = 1; //设定通知声音 notify1.defaults |= Notification.DEFAULT_SOUND; //设定通知震动(需加VIBRATE权限) notify1.defaults |= Notification.DEFAULT_VIBRATE; //设定LED灯提醒 notify1.defaults |= Notification.DEFAULT_LIGHTS; //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.drawable.logo) /** * 显示的提示文字 * * 本例子中的NotififyMessage的TextView中显示的标题 * * TextView中显示的详细内容 */ .setTicker("TickerText:" + "您有新短消息,请注意查收!") .setContentTitle("Notification Title") .setContentText("This is the notification message") //关联PendingIntent .setContentIntent(pendingIntent2) /** * 在TextView的右方显示的数字,可放大图片看,在最右侧。 * 这个number同时也起到一个序列号的左右,如果多个触发多个通知(同一ID),可以指定显示哪一个。 */ .setNumber(1) /** * 需要注意build()是在API * level16及之后增加的,在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.drawable.logo) .setTicker("TickerText:" + "您有新短消息,请注意查收!") .setContentTitle("Notification Title") .setContentText("This is the notification message") .setContentIntent(pendingIntent3).setNumber(1).build(); // 需要注意build()是在API // level16及之后增加的,API11可以使用getNotificatin()来替代 //设定通知声音 notify3.defaults |= Notification.DEFAULT_SOUND; //设定通知震动(需加VIBRATE权限) notify3.defaults |= Notification.DEFAULT_VIBRATE; //设定LED灯提醒 notify3.defaults |= Notification.DEFAULT_LIGHTS; //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.logo, //"自定义通知:您有新短信息了,请注意查收!", System.currentTimeMillis()); Notification myNotify = new Notification(); myNotify.icon = R.drawable.logo; myNotify.tickerText = "TickerText:您有新短消息,请注意查收!"; myNotify.when = System.currentTimeMillis(); //设定通知声音 myNotify.defaults |= Notification.DEFAULT_SOUND; //设定通知震动(需加VIBRATE权限) myNotify.defaults |= Notification.DEFAULT_VIBRATE; //设定LED灯提醒 myNotify.defaults |= Notification.DEFAULT_LIGHTS; 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, 1); 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; } }}
主页面布局:
<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:orientation="vertical" tools:context=".MainActivity" > <Button android:id="@+id/btn1" android:layout_width="fill_parent" android:layout_height="wrap_content" android:onClick="notificationMethod" android:text="默认通知(已被抛弃,但是通用)" /> <Button android:id="@+id/btn2" android:layout_width="fill_parent" android:layout_height="wrap_content" android:onClick="notificationMethod" android:text="默认通知(API11之后可用)" /> <Button android:id="@+id/btn3" android:layout_width="fill_parent" android:layout_height="wrap_content" android:onClick="notificationMethod" android:text="默认通知(API16之后可用)" /> <Button android:id="@+id/btn4" android:layout_width="fill_parent" android:layout_height="wrap_content" android:onClick="notificationMethod" android:text="自定义通知" /> <Button android:id="@+id/btn5" android:layout_width="fill_parent" android:layout_height="wrap_content" android:onClick="notificationMethod" android:text="清除通知" /> </LinearLayout>
还有一个是:自定义通知的布局文件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>
1 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
- Android自动化测试之UIAutomator
- OC语言9-@property @synthesize和id
- LLDB+debugserver动态调试
- 我的第一个爬虫日志
- gitlab使用
- Android开发之Notification 通知栏
- 闭包解惑
- 第十四周--stl阅读程序
- java 性能调优之内存模型深入详解
- jq删除当前行以及前一行,淘宝购物车
- 新浪微博SDKdemo
- PopupWindow制作Spinner下拉列表
- 矩阵乘法中的高阶计算时间和计算误差问题
- LTE 无线参数 学习