博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Android不同版本下Notification创建方法
阅读量:6672 次
发布时间:2019-06-25

本文共 4532 字,大约阅读时间需要 15 分钟。

项目环境

Project Build Target:Android 6.0

 

问题:

使用 new Notification(int icon, CharSequence tickerText, long when)构造函数时,Eclipse却提示:" The constructor Notification(int, CharSequence, long) is deprecated "

源码如下:

1 /** 2 * Constructs a Notification object with the information needed to 3 * have a status bar icon without the standard expanded view. 4 * 5 * @param icon The resource id of the icon to put in the status bar. 6 * @param tickerText The text that flows by in the status bar when the notification first 7 * activates. 8 * @param when The time to show in the time field. In the System.currentTimeMillis 9 * timebase.10 *11 * @deprecated Use {
@link Builder} instead.12 */13 @Deprecated14 public Notification(int icon, CharSequence tickerText, long when)15 {16   this.icon = icon;17   this.tickerText = tickerText;18   this.when = when;19 }

 

 

 

  在不同的版本下Notification使用有一些不同,涉及到Builder的使用。现在总结如下,希望对以后使用的程序员有所帮助。

 

  低于API Level 11版本,也就是Android 2.3.3以下的系统中,setLatestEventInfo()函数是唯一的实现方法。前面的有关属性设置这里就不再提了,网上资料很多。

1 Intent  intent = new Intent(this,MainActivity);  2 PendingIntent pendingIntent = PendingIntent.getActivity(context, 0, intent, PendingIntent.FLAG_ONE_SHOT);  3 notification.setLatestEventInfo(context, title, message, pendingIntent);          4 manager.notify(id, notification);

 

 

 

  高于API Level 11,低于API Level 16 (Android 4.1.2)版本的系统中,可使用Notification.Builder来构造函数。但要使用getNotification()来使notification实现。此时,前面版本在notification中设置的Flags,icon等属性都已经无效,要在builder里面设置。

1 Notification.Builder builder = new Notification.Builder(context)  2             .setAutoCancel(true)  3             .setContentTitle("title")  4             .setContentText("describe")  5             .setContentIntent(pendingIntent)  6             .setSmallIcon(R.drawable.ic_launcher)  7             .setWhen(System.currentTimeMillis())  8             .setOngoing(true);  9 notification=builder.getNotification();

 

 

 

  高于API Level 16的版本,就可以用Builder和build()函数来配套的方便使用notification了。

1 Notification notification = new Notification.Builder(context)    2          .setAutoCancel(true)    3          .setContentTitle("title")    4          .setContentText("describe")    5          .setContentIntent(pendingIntent)    6          .setSmallIcon(R.drawable.ic_launcher)    7          .setWhen(System.currentTimeMillis())    8          .build();

 

 

 

    【注意点】:

    在构造notification的时候有很多种写法,但是要注意,用
  Notification notification = new Notification();
  这种构建方法的时候,一定要加上notification.icon这个设置,不然,程序虽然不会报错,但是会没有效果。 

问题:

使用了Notification下的setLatestEventInfo()方法时,Eclipse却提示:“ The method setLatestEventInfo(Context, String, String, PendingIntent) is undefined for the type Notification”!

查看源码:

1 /** 2 * Sets the {
@link #contentView} field to be a view with the standard "Latest Event" 3 * layout. 4 * 5 *

Uses the {

@link #icon} and {
@link #when} fields to set the icon and time fields 6 * in the view.

7 * @param context The context for your application / activity. 8 * @param contentTitle The title that goes in the expanded entry. 9 * @param contentText The text that goes in the expanded entry.10 * @param contentIntent The intent to launch when the user clicks the expanded notification.11 * If this is an activity, it must include the12 * {
@link android.content.Intent#FLAG_ACTIVITY_NEW_TASK} flag, which requires13 * that you take care of task management as described in the14 * Tasks and Back15 * Stack document.16 *17 * @deprecated Use {
@link Builder} instead.18 * @removed19 */20 @Deprecated21 22 public void setLatestEventInfo(Context context,23 CharSequence contentTitle, CharSequence contentText, PendingIntent contentIntent) {24 Notification.Builder builder = new Notification.Builder(context);25 26 // First, ensure that key pieces of information that may have been set directly27 // are preserved28 builder.setWhen(this.when);29 builder.setSmallIcon(this.icon);30 builder.setPriority(this.priority);31 builder.setTicker(this.tickerText);32 builder.setNumber(this.number);33 builder.setColor(this.color);34 builder.mFlags = this.flags;35 builder.setSound(this.sound, this.audioStreamType);36 builder.setDefaults(this.defaults);37 builder.setVibrate(this.vibrate);38 builder.setDeleteIntent(this.deleteIntent);39 40 // now apply the latestEventInfo fields41 if (contentTitle != null) {42 builder.setContentTitle(contentTitle);43 }44 if (contentText != null) {45 builder.setContentText(contentText);46 }47 builder.setContentIntent(contentIntent);48 builder.buildInto(this);49 }

 

 

 

setLatestEventInfo方法已被removed。

转载于:https://www.cnblogs.com/arture/p/5523695.html

你可能感兴趣的文章
惠普的软件定义IT和芯片级安全
查看>>
东方日升拉美光伏电站项目 将进入首期施工
查看>>
零售业已进入第三阶段,大数据助力实现更多价格歧视
查看>>
软件探索性测试 笔记二
查看>>
那个叫“中国移动”的精神病人就要被治愈了
查看>>
物联网领域,华为将主攻四大市场
查看>>
将来也不会被破译的分布式存储系统
查看>>
光伏电站或成辅助服务市场“输家”
查看>>
今年光伏“领跑者”计划将升级扩围
查看>>
Java程序运行超时后退出或进行其他操作的实现
查看>>
赢在起跑点半途就退场,锂电池先行者企业黯然离席
查看>>
手把手教你启用RemoteFX以及Hyper-V GPU卸载
查看>>
《交互式程序设计 第2版》一3.10 更进一步
查看>>
液晶拼接屏的专业术语有哪些
查看>>
微博悄然取消140字限制 面向全体用户
查看>>
OA系统软件怎么选型?
查看>>
英伟达发布Tesla P4&P40两款基于Pascal架构的深度学习芯片
查看>>
《Web应用漏洞侦测与防御:揭秘鲜为人知的攻击手段和防御技术》——1.5 Web Worker...
查看>>
《UNIX网络编程 卷1:套接字联网API(第3版)》——8.10 UDP程序例子小结
查看>>
拯救 Firefox !
查看>>