How to implement the deprecated methods of Notification
我有一个小问题,但不明白如何摆脱困境。
我创建了一个用于提供Notifications的类,但是这些行被标记为已弃用:
1 2 3 4 5 | ... Notification notification = new Notification(icon, text, time); // deprecated in API level 11 ... notification.setLatestEventInfo(this, title, text, contentIntent); // deprecated in API level 11 ... |
替代方法是:
1 2 3 4 5 6 7 8 | ... Notification noti = new Notification.Builder(mContext) .setContentTitle("New mail from" + sender.toString()) .setContentText(subject) .setSmallIcon(R.drawable.new_mail) .setLargeIcon(aBitmap) .build(); // available from API level 11 and onwards ... |
我可以编写类似以下代码:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 | if(API_level < 11) { ... Notification notification = new Notification(icon, text, time); // deprecated in API level 11 ... notification.setLatestEventInfo(this, title, text, contentIntent); // deprecated in API level 11 ... } else { ... Notification noti = new Notification.Builder(mContext) .setContentTitle("New mail from" + sender.toString()) .setContentText(subject) .setSmallIcon(R.drawable.new_mail) .setLargeIcon(aBitmap) .build(); // available from API level 11 and onwards ... } |
我提供的SDK最低版本为" 8"。
编辑:
我喜欢以下内容:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 | int currentapiVersion = android.os.Build.VERSION.SDK_INT; if (currentapiVersion < android.os.Build.VERSION_CODES.HONEYCOMB){ Notification notification = new Notification(icon, text, time); PendingIntent contentIntent = PendingIntent.getActivity(this, 0, new Intent(this, TaskDetails.class), 0); notification.setLatestEventInfo(this, title, text, contentIntent); notification.flags |= Notification.FLAG_AUTO_CANCEL; mNM.notify(NOTIFICATION, notification); } else { // what to write here } |
我可以为
这就是我最终解决方案的方式:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 | if (currentapiVersion < android.os.Build.VERSION_CODES.HONEYCOMB) { notification = new Notification(icon, text, time); notification.setLatestEventInfo(this, title, text, contentIntent); // This method is removed from the Android 6.0 notification.flags |= Notification.FLAG_AUTO_CANCEL; mNM.notify(NOTIFICATION, notification); } else { NotificationCompat.Builder builder = new NotificationCompat.Builder( this); notification = builder.setContentIntent(contentIntent) .setSmallIcon(icon).setTicker(text).setWhen(time) .setAutoCancel(true).setContentTitle(title) .setContentText(text).build(); mNM.notify(NOTIFICATION, notification); } |
编辑:
上述解决方案有效。 尽管如此,由于引入了
1 2 3 4 5 6 7 | NotificationCompat.Builder builder = new NotificationCompat.Builder( this); notification = builder.setContentIntent(contentIntent) .setSmallIcon(icon).setTicker(text).setWhen(time) .setAutoCancel(true).setContentTitle(title) .setContentText(text).build(); mNM.notify(NOTIFICATION, notification); |
这是获得关卡的正确方法。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 | final int sdkVersion = Integer.parseInt(Build.VERSION.SDK); if (sdkVersion < Build.VERSION_CODES.HONEYCOMB) { ... Notification notification = new Notification(icon, text, time); // deprecated in API level 11 ... notification.setLatestEventInfo(this, title, text, contentIntent); // deprecated in API level 11 ... } else { Notification noti = new Notification.Builder(mContext) .setContentTitle("New mail from" + sender.toString()) .setContentText(subject) .setSmallIcon(R.drawable.new_mail) .setLargeIcon(aBitmap) .build(); // available from API level 11 and onwards } |
所有版本代码都可以在此开发人员链接中找到。