【AndroidAndroid不同版本下Notification创建方法】壮心未与年俱老,死去犹能作鬼雄。这篇文章主要讲述AndroidAndroid不同版本下Notification创建方法相关的知识,希望能为你提供帮助。
使用 new
Notification(int icon, CharSequence tickerText, long when)构造函数时,Eclipse却提示:"
The constructor Notification(int, CharSequence, long) is deprecated
"
/** * Constructs a Notification object with the information needed to * have a status bar icon without the standard expanded view. * * @param icon The resource id of the icon to put in the status bar. * @param tickerText The text that flows by in the status bar when the notification first * activates. * @param when The time to show in the time field. In the System.currentTimeMillis * timebase. * * @deprecated Use {@link Builder} instead. */ @Deprecated public Notification(int icon, CharSequence tickerText, long when) { this.icon = icon; this.tickerText = tickerText; this.when = when; }
在不同的版本下Notification使用有一些不同,涉及到Builder的使用。现在总结如下,希望对以后使用的程序员有所帮助。
低于API Level 11版本,也就是android 2.3.3以下的系统中,setLatestEventInfo()函数是唯一的实现方法。前面的有关属性设置这里就不再提了,网上资料很多。
Intentintent = new Intent(this,MainActivity); PendingIntent pendingIntent = PendingIntent.getActivity(context, 0, intent, PendingIntent.FLAG_ONE_SHOT); notification.setLatestEventInfo(context, title, message, pendingIntent); manager.notify(id, notification);
高于API Level 11,低于API Level 16 (Android 4.1.2)版本的系统中,可使用Notification.Builder来构造函数。但要使用getNotification()来使notification实现。此时,前面版本在notification中设置的Flags,icon等属性都已经无效,要在builder里面设置。
Notification.Builder builder = new Notification.Builder(context) .setAutoCancel(true) .setContentTitle("title") .setContentText("describe") .setContentIntent(pendingIntent) .setSmallIcon(R.drawable.ic_launcher) .setWhen(System.currentTimeMillis()) .setOngoing(true); notification=builder.getNotification();
高于API Level 16的版本,就可以用Builder和build()函数来配套的方便使用notification了。
Notification notification = new Notification.Builder(context) .setAutoCancel(true) .setContentTitle("title") .setContentText("describe") .setContentIntent(pendingIntent) .setSmallIcon(R.drawable.ic_launcher) .setWhen(System.currentTimeMillis()) .build();
【注意点】:
在构造notification的时候有很多种写法,但是要注意,用
Notification notification = new Notification();
这种构建方法的时候,一定要加上notification.icon这个设置,不然,程序虽然不会报错,但是会没有效果。
问题:
使用了Notification下的setLatestEventInfo()方法时,Eclipse却提示:“ The method setLatestEventInfo(Context, String, String, PendingIntent) is undefined for the type Notification”!
/** * Sets the {@link #contentView} field to be a view with the standard "Latest Event" * layout. * * < p> Uses the {@link #icon} and {@link #when} fields to set the icon and time fields * in the view.< /p> * @param context The context for your application / activity. * @param contentTitle The title that goes in the expanded entry. * @param contentText The text that goes in the expanded entry. * @param contentIntent The intent to launch when the user clicks the expanded notification. * If this is an activity, it must include the * {@link android.content.Intent#FLAG_ACTIVITY_NEW_TASK} flag, which requires * that you take care of task management as described in the * < a href="https://www.songbingjia.com/android/{@docRoot}guide/topics/fundamentals/tasks-and-back-stack.html"> Tasks and Back * Stack< /a> document. * * @deprecated Use {@link Builder} instead. * @removed */ @Deprecatedpublic void setLatestEventInfo(Context context, CharSequence contentTitle, CharSequence contentText, PendingIntent contentIntent) { Notification.Builder builder = new Notification.Builder(context); // First, ensure that key pieces of information that may have been set directly // are preserved builder.setWhen(this.when); builder.setSmallIcon(this.icon); builder.setPriority(this.priority); builder.setTicker(this.tickerText); builder.setNumber(this.number); builder.setColor(this.color); builder.mFlags = this.flags; builder.setSound(this.sound, this.audiostreamType); builder.setDefaults(this.defaults); builder.setVibrate(this.vibrate); builder.setDeleteIntent(this.deleteIntent); // now apply the latestEventInfo fields if (contentTitle != null) { builder.setContentTitle(contentTitle); } if (contentText != null) { builder.setContentText(contentText); } builder.setContentIntent(contentIntent); builder.buildInto(this); }
setLatestEventInfo方法已被removed。
原文地址:http://www.cnblogs.com/Arture/p/5523695.html
推荐阅读
- Android Gradle Plugin指南——依赖关系android库和多项目配置
- Java/AndroidToast使用方法大全
- Android Wi-Fi Peer-to-Peer(Android的Wi-Fi P2P对等网络)
- Android Drawable Mipmap Vector使用及Vector兼容
- Android Design Support Library概览
- Python中如何使用切片range()函数(示例)
- JavaScript let关键字的介绍和用法指南
- 如何在C++中使用STL查找向量的最小和最大元素()
- PHP如何使用ftp_chdir()函数(代码示例)