码迷,mamicode.com
首页 > 其他好文 > 详细

Notifications 22222222222

时间:2014-07-27 11:01:12      阅读:194      评论:0      收藏:0      [点我收藏+]

标签:

 

 

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

标签:

原文地址:http://www.cnblogs.com/zhiqixue/p/3870950.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!