首页 > 代码库 > Notifications 22222222222
Notifications 22222222222
Notifications 有两个比较大的更新版本 :
在不使用新API的情况下,如果用户要对一条短信的Notifications进行删除或者回复 ,用户需要进入到应用程序。如果使用新API的话,用户不需要进入应用程序就可以对短信 进行 删除 或者 回复了。
并不是所有通知的功能都能用于特定的版本。例如动作按钮只能用于4.1Jerry Bean之后。因为只有从这个版本往后才有可展开的通知出现。为了确保达到最好的兼容性,请使用NotificationCompat (V4包)及其子类创建通知, 最好是NotificationCompat.Builder。此外,当你实现一个通知时,请遵循如下过程:
(1).无论用户使用什么版本,都应该提供通知所有的功能给所有用户。为了做到这一点,需要在一个Activity中验证所有功能是否可用。有时候你可能需要添加一个新的Activity。例如:当你想调用addAction()方法来控制媒体停止和播放时,首先应该在一个Activity中实现这个功能。
(2).当用户点击通知时,确保所有用户点击后都能启动一个界面。我们需要为Activity创建一个PendingIntent对象。然后调用setContentIntent()方法将PendingIntent对象添加到通知中去。
(3).现在可以在你想要使用的通知中添加可展开的特征。记住一点,当用户点击通知时,对于那些你想要添加到通知的功能,要保证它们在Activity中也是可用的。
Api11 (Android 3.0 ) : (虽然是Android3.0 加入的)加入了 Notification.Builder 更容易创建Notifications。 为了兼容性,我们用v4包的。
Api16 (Android 4.1.2 ) :
/** * 添加点击删除的动作 */ builder.addAction(R.drawable.ic_launcher, "删除", getDeletePendingIntent(ctx));
关于notification。两种写法,一种v4的compat.build,一种最原始的notification。
源代码中说明: Notification.Builder
更容易创建Notifications。 所以,推荐用 compat.build (v4包的)来创建通知。
因为 public Notification.Builder (Context context) Added in API level 11 (在11版本 Androd 3.0 才加入)。
原始的:
NotificationManager mNotificationManager = (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE); Notification notification = new Notification(R.drawable.ic_launcher, "title", System.currentTimeMillis()); notification.defaults = 0; Uri uri = Uri.parse("http://baidu.com"); Intent intent = new Intent(Intent.ACTION_VIEW, uri); intent.setComponent(null); PendingIntent pi = PendingIntent.getActivity(getApplicationContext(), 0, intent, 0); notification.setLatestEventInfo(getApplicationContext(), "title", "content", pi); mNotificationManager.notify(1000, notification);
v4包的: 系统的 public Notification.Builder (Context context) Added in API level 11 (在11版本 Androd 3.0 才加入)。
NotificationManager mNotificationManager = (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE); NotificationCompat.Builder builder = new NotificationCompat.Builder( getApplicationContext()); builder.setSmallIcon(R.drawable.ic_launcher); builder.setDefaults(0); builder.setAutoCancel(true); builder.setContentTitle("title"); builder.setContentText("content"); Uri uri = Uri.parse("http://baidu.com"); Intent intent = new Intent(Intent.ACTION_VIEW, uri); intent.setComponent(null); PendingIntent pendingIntent = PendingIntent.getActivity( getApplicationContext(), 0, intent, 0); builder.setContentIntent(pendingIntent); mNotificationManager.notify(1000, builder.build());
Notifications 22222222222