[关闭]
@natsumi 2016-04-26T03:18:18.000000Z 字数 1719 阅读 3518

总结Notification的兼容问题

Android


参考:
Android技巧小结之新旧版本Notification
http://blog.csdn.net/olanmomo/article/details/39782343

setLatestEventInfo方法找不到的问题解决方法
http://stackoverflow.com/questions/32450449/setlatesteventinfo-cannot-be-resolved

解决前台服务只显示默认通知不显示自定义通知的问题
stackoverflow.com/questions/23148734/androidstart-foreground-wont-display-notification-properly


Error:(38, 25) 错误: 找不到符号
符号: 方法 setLatestEventInfo(MyService,String,String,PendingIntent)
位置: 类型为Notification的变量 notification

解决:
如果编译的SDK版本在API23以上,就会出现这个问题,因为setLatestEventInfo方法在api23中被删掉了

在api4以上的版本用notification可以用support v4中的NotificationCompat.Builder。android文档中给了一个例子:

  1. Notification noti = new Notification.Builder(mContext)
  2. .setContentTitle("New mail from " + sender.toString())
  3. .setContentText(subject)
  4. .setSmallIcon(R.drawable.new_mail)
  5. .setLargeIcon(aBitmap)
  6. .build();

把上面"Notification.Builder"替换成"NotificationCompat.Builder"
alter+enter 把supportv4中的相关的库import进来

  1. import android.support.v4.app.NotificationCompat;

于是代码编程了这样

  1. Notification notification;
  2. if (Build.VERSION.SDK_INT < Build.VERSION_CODES.JELLY_BEAN) {
  3. notification = new NotificationCompat.Builder(this)
  4. .setSmallIcon(R.mipmap.ic_launcher)//必须要先setSmallIcon,否则会显示默认的通知,不显示自定义通知
  5. .setTicker("显示于屏幕顶端状态栏的文本")
  6. .setContentTitle("this ics content title")
  7. .setContentText("this is content text")
  8. .setContentIntent(pendingIntent)
  9. .build();
  10. } else {
  11. notification = new Notification.Builder(this)
  12. .setSmallIcon(R.mipmap.ic_launcher)//必须要先setSmallIcon,否则会显示默认的通知,不显示自定义通知
  13. .setTicker("显示于屏幕顶端状态栏的文本")
  14. .setContentTitle("this is content title")
  15. .setContentText("this is content text")
  16. .setContentIntent(pendingIntent)
  17. .build();
  18. }
  19. startForeground(2,notification);

注意:!!!上面这段代码是前台服务的notification,通过startForeground让服务变成前台服务并显示通知。这时必须要setSmallIcon,否则会显示默认的通知,不显示自定义通知!!!如果是正常的用NotificationManager显示通知则无所谓顺序

添加新批注
在作者公开此批注前,只有你和作者可见。
回复批注